1楼:匿名用户
这道题真bai是绕啊,陷阱重重。
首先du,a=014,由于首位是zhi0,这就是一dao个8进制的数,转换为十进内制就是容12,也就是说初始a=12.
然后a=0xa | a >12
首先我们知道判断是否相等用的是==,=是用来赋值的。这样a=0xa,0xa是十六进制,装换成十进制就是10.这样就使得a=10了,这个判断条件就是
10|a>12
后一个显然不对,但是10是真值,条件通过。
下面这个
011&10==a
011是8进制数,十进制为9,二进制为1001,而10的二进制为1010,进行且运算后即为1000,是8.
这时你可能以为8==a当然错了,因为现在a是10嘛!
这其实是左值和右值的问题,解释不清楚。
因为正常的判断该是这样a==8,这个可以肯定是错误条件。
但8==a就取决于具体实现了。这里,他就是1,是正确的条件!
然后执行你你也就知道了,
printf ( ” %d!\n ” , a);
把10!打了出来
而else printf ( ” right!%d\n ” , a);
else printf (”wrong!%d\n” , a);
因为条件均成立,不会执行。
2楼:匿名用户
应该是if ( a==0xa | a >12 )if里应该是判断语句==,不是赋值=
0xa是十六进制的10;014是八进制的12;
所以结果是wrong!12
{else 与之前最近的if配对
求解释、一道简单的C语言题目,一道简单的c语言题目,求代码
1楼 流云的歌 我总共做了三个测试。 只有x 0 0 或 null 时,没有给后面的x 1 x 2 赋值时结果是7 0,说明这个字符串是空串。所以是0 当只有x 1 0 时,显示7 1 第三个测试是测试strlen 这个我不用说了。 2楼 小囚love腊肉 x 0 0 x 1 0 这两句赋的值一样,...
求大神,简单的C语言问题,求大神,一个简单的C语言问题
1楼 匿名用户 func的参数输入就是定义一个新的变量b 再将a赋值到b a的值不会变 好比执行了int b a 所以函数输出 12 y 2楼 听不清啊 程序运行后会输出 12 y c语言中实参到形参都是单向值传递的。 3楼 飘遥舞者 参数传递知识,取值传值方式不会改变原变量的值 求大神帮编写一个简...
蓝桥杯C语言题目,蓝桥杯练习题c语言
1楼 匿名用户 include int main char num 10 int sgln 0 sang yu len 0 sang 2019 26 yu 2019 26 num len code yu len while sang 0 len for len 0 len 2楼 匿名用户 int a...