1.1常量与变量
1.局部变量和全局变量能否重名?
能,局部变量会屏蔽全局变量。要使用全局变量,需在变量名前添加“::”。
2.全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?
全局变量可以定义在可被多个.C文件包含的头文件中。因为在不同的C文件中以static形式来声明同名全局变量,但在这些同名的全局变量中只能有一个C文件对其赋初值,这样才不会出错。
3.如何引用一个已经定义过的全局变量?
可以用引用头文件的方式,也可以用extern关键字来引用已经定义过的全局变量。
4.全局变量和局部变量在内存中是怎样存放的?两者之间有何区别?
全局变量存储在静态数据库,局部变量存储在堆栈。全局变量在程序开始执行时分配存储区,程序执行完毕释放,在程序执行过程中全局变量始终占据固定的存储单元;局部变量是动态分配存储空间的,在调用变量所在函数时系统会给函数的局部变量分配存储空间,在函数调用结束时就自动释放这些存储空间。
5.-8在内存中的存储形式是( )。
A. 1111111111111000
B. 1000000000001000
C. 0000000000001000
D. 1111111111110111
一个正数的补码和其原码的形式相同,一个负数的补码是将该数绝对值的二进制形式按位取反再加1。A
6.数值029是一个( )。
A. 八进制数 B. 十六进制数 C. 十进制数 D. 非法数
八进制整常数必须以0开头,数码取值为0~7;D
1.2基本数据类型
1.设变量i是整型,f是实型,d是双精度型,则表达式6+‘a’-i+d*f值的数据类型为( )。
A. int
B. float
C. double
D. 不确定
在整型、实型和字符型数据间进行混合运算时,应从低精度向高精度转换,即将字符型数据先转换成整型,再将整型数据和实型数据转换成双精度型数据,然后在同类型数据间进行运算,结果为double型。C
2.写出float a与“零值”比较的if语句。
if ((a >=-0.00001) && (a <= 0.00001)),存储有误差,1e-6
3.设变量a为f1oat类型,b为int类型,则以下能实现将a中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是( )。
A. a=(a100+0.5)/100.0
B. b=a100+0.5 ,a=b/100.0
C. a=(a/100+0.5)100.0
D. a=(int)(a100+0.5) /100.0
将float型数据赋值给int型数据时,将舍弃该float型数据的小数部分。将int型数据赋值给float型数据时,数值不变,增加小数部分(小数部分均为0)。BD
4.下面的代码输出是什么?为什么?
void food(void)
{
unsigned int a = 6;
int b = -20;
(a+b > 6) ? puts("> 6") : puts("<= 6");
}
代码输出的是“>6”,因为当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。因此-20变成了一个非常大的正整数,所以该表达式计算出的结果大于6。