c语言的简单题目

2021-03-12 09:50:25 字数 818 阅读 5692

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...