C/C++基础问题整理
这篇文章中记录本人对一些C/C++基础概念的理解,主要包括以下几个方面内容:
1、类型转换
1、类型转换
在C和C++的一个表达式中往往会包含几种不同的数据类型,要让这些数据类型之间可以进行运算,必须让他们之中的一些或全部进行类型转换,这种转换有两种形式,一种是编译器自动进行的,叫隐式类型转换,另一种是编程中强制执行的,叫强制类型转换。
1.1、隐式类型转换
1.1.1、例子
首先由两个例子来引出问题,分析下面两个例子的输出:
例一:
#include <stdio.h>
int main(int argc, char *argv[])
{
signed int a = -8;
unsigned int b = 4;
printf("%d\n", (a+b)/2);
return 0;
}
例二:
#include <stdio.h>
int main(int argc, char *argv[])
{
signed short a = -8;
unsigned short b = 4;
printf("%d\n", (a+b)/2);
return 0;
}
1.1.2、何时发生转换
1、在混合类型的表达式中,操作数要转换成相同类型。
2、用作条件的表达式需要转换成bool型。如if()、while()等。
3、初始化或赋值操作。
1.1.3、各种转换方式
1、算术转换:
算术转换最简单的是整形提升,对比int小的整数类型的操作数,如char,signed char, unsigned char, short, unsigned short,如果int能容纳下他们,这些数都转换为int进行运算,如果int不能容纳就转换为unsigned int,当int和unsigned int一起运算时,转换为unsigned int进行。当有其它数据类型的操作时,必须遵循一个原则就是在不丢失精度的前提下,用尽量少的位数表示。
2、指针转换:
3、与bool型有关的转换
4、与枚举有关的转换
5、与const有关的转换
6、由标准库类型定义的转换
相关文档:
系统环境:Windows 7
软件环境:Visual C++ 2008 SP1 +SQL Server 2005
本次目的:编写一个航空管理系统
这是数据库课程设计的成果,虽然成绩不佳,但是作为我用VC++ 以来编写的最大程序还是传到网上,以供参考。用VC++ 做数据库设计并不容易,但也不是不可能。以下是我的程序界面,后面 ......
char *strcpy(char *strDes, const char *strSrc)
{
assert((strDes != NULL) && (strSrc != NULL));
char *address = strDes;
while ((*strDes + ......
参考《linux内核完全注释》和网上相关文章
/*
* 控制台显示操作
*/
/*
* linux/kernel/console.c
*
* (C) 1991 Linus Torvalds
*/
/*
* console.c
*
* This module implements the console io functions
* 'void con_init(v ......
头文件一般由三部分内容组成:(1)头文件开头处的版权和版本声明;(2)预处理块;(3)函数和类结构声明等。
头文件扩展名为*.h。
为避免出现重复定义的问题 ,头文件一般写法如下:
/*----------------------------------------------------
MATH.H
-------------------------------------------------------*/
#ifndef& ......