C语言面试题

设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
解析:这道题是想通过地址便宜的方式取得二维数组的地址。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值