C语言问题 解释下这个问题

设char型变量x的值为00100111下标(2),则表达式(2+x)^(~3)的值是 (用二进制表示 ) 说下具体过程

~表示取反:是一个单元(目)运算符,用来对一个二进制数按位取反,即将0变1,1变0.
而3的二进制形式为:00000011
所以~3的值为:11111100
而2+X的值为:00000010+00100111=00101001
^表示“异或”运算符:“异或”运算符也叫XOR运算符。它的规则是:若参加的两个二进制数同号,则结果为0,(假);异号则为1(真)。即0^0=0;0^1=1;1^1=0;1^0=1
所有这个表达式的最后结果为:00101001^11111100=11010101
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-11-30
修正一点: 负数在计算机内是以补码表示的,不是反码:
(2+x)^(~3)
=(00000010+00100111)^(-00000011)
=00101001^11111101 // 11111101 不是11111100
=11010100
也就是10进制的-44
第2个回答  2011-11-30
(2+x)^(~3)
=(00000010+00100111)^(~00000011) //~表示取反
=00101001^11111100 //^表示异或
=11010101

...一个概念性问题,我很难理解。希望C理解的深的给我详细解释解释...
分析一下:*(a+i)[j]。1.首先,因为[]优先级(顶级)高于*(次顶级),所以应先算[]。所以先只看(a+i)[j]。2.然后,这里一堆的东西不好看,做个简化:因为a是二维数组的名字,故a+i是第i行的行指针,相当于一个一位数组的数组名。把a+i记作x,那么(a+i)[j] 就可以记成 x[j]。

C语言问题 解释下这个问题
~表示取反:是一个单元(目)运算符,用来对一个二进制数按位取反,即将0变1,1变0.而3的二进制形式为:00000011 所以~3的值为:11111100 而2+X的值为:00000010+00100111=00101001 ^表示“异或”运算符:“异或”运算符也叫XOR运算符。它的规则是:若参加的两个二进制数同号,则结果为0,(假...

C语言问题,求大神解决,谢谢拉。。我是小白,解释下原因
所以a<b?a:c<d?c:d 可以看成 a<b?a: (c<d?c:d) 1 < 4 ? a : (c < d ? c:d)括号内的表达式也可以看做是一个元素 因为 a = 1 b = 4 所以 条件 a < b 成立 所以选前者 a 答案就是 A) 1

C语言问题,求大神解决,谢谢啦,我是小白,最好能够解释下原因..
第一项的结果不正确。第二项和第四项结果等同都是指向指针的指针操作。可以将二维数组看成一个双重指针,第一个中括号是一个一重指针。比如说a[n][m]中a[0]是一个指向a[0][m]数组首位a[0][0]的指针,而a则是指向指针数组*a[n]的首位a[0]的指针。这样我们来看B选项,*(a+2)表示一...

...帮忙解答,追加悬赏喔。麻烦把各个选项都解释解释最好了:)_百度知 ...
这个union是表示,一块储存空间用short,long,char,三种类型来描述,所以c[0] 与i[0]一样的。这个程序是要打印s->c[0],printf("%x\\n", s ->c[0])这句里的%x表示打印的数字是十六进制的。由于c[0]里面放的是0x39,所以这里打印的正好是39.第三题:与第二题类似,注意这里求的是them的...

发现了一个有趣的c语言问题,请各位大神帮忙解释一下。
2.scanf("%d",20000)这句合法并没有什么难以理解的地方,因为指针归根到底也只是一个地址值罢了,直接用地址值和直接用指针,这没有任何区别,最多就是编译器会警告你一下。不知道你说的“”自己定义一个函数比如f(*pointer);然后在用这种方法就会报错“”是什么意思 看下面代码 include <stdio.h...

一道C语言问题 麻烦帮我解释一下!
输出是321 这里主要涉及到ASC码表对应以及char和int类型隐式转换的问题,需要记住的是:一个字符类型的数据,在进行+、-、*、\\等运算时,编译器会隐式类型转换为该字符对应的ASC码值来计算。char x=123; 该句将x初始化为ASC码值为123的字符。开始循环时,x存放字符的ASC码值为123,因此x%10=3...

能帮忙解释一下这道c语言题目吗?
题目要求与条件表达式等价,就是把这个选项替换掉条件表达中的(x-y)时,条件表达式的执行结果不变。条件表达式的需要:(x-y)如果等于true,需要x与y不相等,(x-y)如果等于false,需要x等于y 选项D结果如果为true,则x等于y,如果为false,则x不等于y。正好与要求相反。

C语言 问题 解释下。。运行结果怎么是8,17 8理解 17就纳闷了 自己算是...
原因是函数func()中的变量m,和i是静态变量 (当函数执行一次后,静态变量会保存运行结果,当下次调用时,将会沿用上次的运行结果。)也就是说,执行一次func()后,m=8,i=3;这样就使得第二次运行的结果为17。静态变量的生存周期是整个源程序,即,当你关闭整个程序,重新打开运行时,变量会回到初始...

C语言,求问这道题的答案到底是C还是D呀,顺带解释下原因吧,感谢
所以选择D。也许你有疑惑,那为什么D选项里面是f(int array[2][5])呢?实际上刚刚已经说了,array表示的是指针而不是具体的数组,所以int array[2][5]会被编译器解释为int array[][5]。而实际上第一个括号里面是可以填入任意的数字的,反正被编译后都会被解释为int array[][5]...

相似回答