【无标题】

2022.11.22 C错题

1.下列程序段输出结果为:

int x=1, y=012;
printf(%d”,y*x++);

输出结果:10
分析:012是8进制数,转换成十进制数是9,而x++的结果是加1以前的值,即1。

2.以下表达式x&&1用在if的条件中时,和哪个是等价的:
答案:x
分析:x只要不是0就是逻辑真,右边的1是确定的值,所以其实不起作用

3.对于以下代码:

	unsigned short sht = 0;
	sht --;

执行后,sht的值是2的16次方-1
分析:short类型在各种平台都是16位,2的16次方为65536,所以unsigned short能表达的最大的数是65535,而且unsigned 不能表达负数

4.在代码:

while ( !e )

中,!e等价于:e == 0
分析:e一般指自然常数,其值约为2.718281828。任何非0整数值都是逻辑的true,所以只有e是0的时候,!e才会是true。

5.对于一下代码

int i,j=6;

i没有被初始化,j=6

6.对于一下代码:

int i=6;
do {
	printf("%d", i--);
} while (0);

输出i=6
分析:i–的结果是i减以前的值,while(0)是合乎语法的。

7.表达式ch =‘B’ + ‘8’ + '3’表达的字符是:G
分析:

8.以下代码的输出是:

int i,x,y;	
i=x=y=0;
do {
	++i;
	if ( i%2 ) 
		x+=i, 
	i++;
	y +=i++;
} while ( i<=7 );
printf("%d %d %d", i, x, y);

结果:9 1 20
分析:第一次初始值i=0的时候先执行了++i,这时候i=1,i%2=1,满足true=1进入if循环,执行x=x+i=0+1=1,i自增得到2,还需要注意,y=y+i++,这时候y=0+2=2,i继续自增得到3。关于这个逗号不是语法错误,是从左到右计算表达式,并且表达式的值为最后一个语句的值。第二次,i自增i=4,不满足if语句,执行y=2+4=6,i自增i=5。满足while循环的。第三次,i自增i=6,不满足if语句,执行y=6+6=12,i自增i=7。还是满足i<=7。第四次,i自增i=8,不满足if语句,执行y=12+8=20,i自增i=9,不满足循环条件,结束循环,最后输出得到i=1,y=20。

9.表达式(double)(10/4*4)的结果是8.0
分析:这个计算过程中是int类型,只是输出结果是double类型

10.以下代码段的结果是:

int i=10;
long long t = sizeof(i++);
printf("%d", i);

结果是:10
分析:sizeof()是静态运算符,但不会对表达式进行计算。。。很多公司面试题中出现过。

11.以下代码的输出是:

int x=0, y=0, z=0;
z = (x==1) && (y=2);
printf("%d ", y);

答案:0
分析:y=2只是用于逻辑判断,不是真正的在赋值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

给我少一点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值