设a和b均为double型变量,且a = 5.5、b = 2.5,则表达式(int)a+b/b的值是()
答案是:6.000000
解析:a被强转为int型,加号后面b/b是两个double型相除取整等于1.000000。前后相加后自动向高精度。
若变量已正确定义,一下非法的表达式是()
A、a /= b+c B、a%(4.0) C、a = 1/2*(x=y=20, x*3) D、a=b=c
答案是:B
解析:取余两边都要是整型。
下面程序段的运行结果是
char *s = "abcde";
s+=2;
printf("%d", s);
A、cde B、字符’c’ C、字符’c’的地址 D、无确定结果
答案是:C
解析:如果用%d来输出一个字符的地址,那么会报警告,但程序还是会运行,结果就是该字符的地址;如果用%d来输出字符的话,那么输出的就是他的ASCII码值。
char a = 129; printf(“a = %d\n”, a);执行上述代码之后输出结果为:______
答案是:-127
解析:因为一个char型是一个字节,八位二进制存储的,所以当符号(signed char)的时候它的取值范围是-128~127(1111 1111~0111 1111,第一位是符号为。中间有两个0不要忘了)
拓展:
int main()
{
char a = -130;//超出丢弃
printf("%d", a);
return 0;
}
上面的代码输出结果是126,用2进制计算 -130的二进制是1 1000 0010,其实不能表示这么多已经溢出了,丢弃最前面的符号位,将1000 0010取反0111 1101 再+1得到补码,0111 1110这个就是-130在char中存储的值了。
int a[5][4],a的地址为0x00000000,printf("%d", a[4]+3)的值___________
答案是:76或0111 0110
解析:这道题是想通过地址便宜的方式取得二维数组的地址。