注册 登录
编程论坛 C语言论坛

这个结果为什么是-11?

飞天大烧卖 发布于 2020-04-26 15:58, 2585 次点击
只有本站会员才能查看附件,请 登录

如图所示
#include<iostream>
int main()
{
    unsigned short a = 10;
    std::cout << (~a);
}
6 回复
#2
yiyue1232020-04-26 16:10
a + ~a = -1
举个例子, 00000001 + ~(00000001) = 00000001 + 11111110 = 11111111 = -1
#3
yiyue1232020-04-26 16:15
忘了看题了.....
使用 g++ 的话,输出是4294967285
我使用 MSVC 的话,和你一样。
只有本站会员才能查看附件,请 登录

#4
yiyue1232020-04-26 16:19
忘了看题了.....
使用 g++ 的话,输出是4294967285
我使用 MSVC 的话,和你一样。
只有本站会员才能查看附件,请 登录

#5
yiyue1232020-04-26 16:24
很抱歉.....
g++ ,和 msvc 的结果都应该是 -11。(我在 g++ 编译的那个中使用的是 unsigned int)
~ 运算符作用对象是 int 型,用在 unsigned short 上存在 类型提升。
#6
hbccc2020-04-26 19:33
c++?不懂
#7
飞天大烧卖2020-04-27 11:00
回复 5楼 yiyue123
客气啦,多谢
1