为什么int a 10 int b a输出b的值确实-11呢

2020-12-07 13:25:13 字数 3748 阅读 9790

1楼:匿名用户

~号是取反符

10的二进制表示为 00001010(int为32位,多余的0省,假设为8位)

b的值为对10的二进制取反,即 11110101 (最高位为1,所以为负数,负数用补码表示,该值刚好是-11的补码)

所以b的值为-11

2楼:匿名用户

因为int型为有符号的两个字节,即a=10化成二进制为0000,0000,0000,1010;再取反,即为1111,1111,1111,0101这就是b!此时将b化成10进制为-32757。但在输出时系统自动化为-32768+32757=-11保存

3楼:听不清啊

这是正确的去处啊。补码就是这样表达的。

java语言中int a=10;double b=a/4;b的值为什么是2.0 ,从结果上看double a=10;int b=a/4;b的值也是2.0,

4楼:匿名用户

int a=10;double b=a/4中a/4实际就是取整,你然后把这个数又转化成小数,所以输出的是2.0

double a=10;int b=a/4;a/4算出来应该是2.5,但是你强制转化成整型,就成了2.0

5楼:匿名用户

a/4参加运算的两个数都是整型的,所以按照整型的进行计算得到的数会取整,然后再赋值给double型的b,这时小数已经丢失了。

int b=a/4;虽然计算是double型的,但由于赋值给整型的b所以取整后再赋的值。

double b=(double)a/4;或者b=a/4.0;即可得到浮点结果。

java中int a=10 然后int b=a++,怎么a的值也改变了??????

6楼:主宰比赛

int b = a++;他的详细过程是

先将a现有的值赋值给b,然后对a进行自加操作a+=1;

完整的列出来给你看下

int b = a++;

相当于下面两步

int b =a;

a+=1;

顺便提一下++a;++a的计算过程是,先计算a+=1,然后将a的值赋值给b

相当于:

a+=1;

int b=a;

次序正好与上面相反,但是无论哪个,最后a的值都是变化的。

如果你想要a不变化,就这样写,先给b赋值

int b=a;

这个时候b已经得到了和a一样的值,然后对b进行操作b++;

这样a就不变啦~

int a=10, b;b=(a++)+a(++);输出a, b的结果?为什么?

7楼:匿名用户

b=(a++)+a(++);

应该是b=(a++)+(a++);把?

a ==12 b==20 ,

b=(a++)+(a++) 等价于 b=a+a; a++;a++;

懂了吧? a++是先运算后++ 如果 改成 b=(++a)+(++a); 结果 b==24,a==12

8楼:匿名用户

a++=11,(a++)=12, a=12 b=20

int a=10; int b= a++; system.out.print(a);. system.out.print(b); a为什么是11,b10是

9楼:匿名用户

a++的顺序是,先使用值,再计算,

所以**可以解析为:

int a=10;

int b=a;

a=a+1;

所以a值为11,b为10,

如果用b=++a;

则a,b都是11

10楼:匿名用户

a之所为11是因为在赋值给b以后做了一次累加

b之所为10是因为在a=10的时候赋值给了b

11楼:沧海雄风

b=a++ 先把a值赋值给b 然后a自加 因此 b=10 a =11

如果是 b= ++a的话 那么是先执行自加 然后赋值给b a,b两个都是11

这个东西 考试必考 都考烂了

unsigned int a=6; int b=-20; char c; c=(a+b>6); printf("%d",c); 为什么c的值为1?

12楼:红楼陨梦

b是负数,在内存中以补码的形式存储,大小为4个字节,其二进制形式为:

11111111 11111111 11111111 11101100

a 为unsigned int型,b为int型。

运算(a+b>6)时,先a+b,根据运算规则,b将被看成是unsigned int 型,

即11111111 11111111 11111111 11101100所带表的unsigned int 型数据,化为十进制为

4294967276

则 a+b = 6 + 4294967276 = 4294967282 〉6,表达式为真,故c = 1。

13楼:金色潜鸟

a+b , b 变 unsigned int 后再运算,-20会变很大的正数,a+b 大于6 ,得真(即1)。c的值为1。

14楼:梦翔茄子

自动转换问题,当有符号整型数遇到无符号整型时会自动转换为无符号数,表达式中b变为正值,a+b肯定大于6。

15楼:匿名用户

a+b>6为真,所以是1,十进制的1在char型里显示出来就是1

c语言int a=10; int b=20; int value=(a=40)&&(a==40); 为什么输出value值是1呢?

16楼:深谷幽兰

(a=40)&&(a==40)中,a=40是给a赋值为40,所以左边的结果为1。由于左边赋值后a的值为40,所以右边a==40的结果为1。1&&1结果为1,所以最后value的结果为1。

17楼:匿名用户

#include"stdio.h" void main()

int a=10, b;b=(a++)+a(++);输出a, b的结果?为什么?

18楼:

b=(a++)+a(++);

改为:b=(a++)+(a++);

不同的编译系统结果不同,在vc++下,结果为a=12

b=20

19楼:匿名用户

你的语句有错:b=(a++)+a(++);应该是b=(a++)+(a++);

输出结果a=12,因为a再次自增;

b=20,因为a++的++是后缀运算,所以对于当前语句中的b=(a++)+(a++)执行时,a都作为10计算

20楼:悟晓曼闻盼

b=(a++)+a(++);

应该是b=(a++)+(a++);把?

a==12

b==20

,b=(a++)+(a++)

等价于b=a+a;

a++;a++;

懂了吧?

a++是先运算后++

如果改成

b=(++a)+(++a);

结果b==24,a==12

求解。变量a,b,c的值分别是?int x 10,y

1楼 草柏渡 首先你这程序有错误的判断 x y 就好。 在前面 或就 就是先 或 再用数 在后面就先就是先用数在 或 所以 x y 是对的。所以a x 所以a 8的 经过两个 。 b x 先赋给b再 。所以b 8 x为9 c等于y。y等于10 y 是没有执行到的。 5 执行以下程序段后 变量a b ...

若有以下程序段,则变量C的二进制值是int a 3,b

1楼 取綽號好難 a 3 b 6 c a b 2 00000011 00000110 2 00000011 00011000 00011011 a 00011011 2楼 匿名用户 a 00000011 b 00000110 t b 2 00011000a t 00011011 所以选a 以下程序段...

清代的翡翠有b货吗,奇怪,为什么清代的翡翠拿去检测,测出来的会是B货呢?。求专家指教。

1楼 匿名用户 技术上讲可以做,用碱长腐蚀,然后用蜡煮,和田玉的染色和做沁,明朝的时候就开始,如果按照和田玉造假的方法,处理翡翠,技术上讲没问题的。 实际上,清代的后期,自从慈禧喜欢翡翠后,翡翠在国内才开始大规模的流行,而且大都在贵族和富人阶层流行,应该讲作假的不会很多。 2楼 筝臣 清代的有炝色翡...