您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> C/C++ >> 菜鸟学C++遇到的一些小问题,急急急!!

菜鸟学C++遇到的一些小问题,急急急!!

来源:网络整理     时间:2016/8/28 16:38:27     关键词:

关于网友提出的“ 菜鸟学C++遇到的一些小问题,急急急!!”问题疑问,本网通过在网上对“ 菜鸟学C++遇到的一些小问题,急急急!!”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 菜鸟学C++遇到的一些小问题,急急急!!
描述:

c++算术符号


int a = 2;
cout<<~a<<>

为什么会输出-3呢??
code=c]
int a = 2;
cout< [/code]
为什么会输出0呢??
code=c]
int a = 0;
cout< [/code]
为什么会输出1呢??
code=c]
int a = -1;
cout< [/code]
为什么会输出0呢??
有人可以解释一下~和!这两个运算符吗
解决方案1:

引用 4 楼 u014520745 的回复:
Quote: 引用 2 楼 brookmill 的回复:

!是逻辑取反。对于逻辑运算符,只有true(1)和false(0)两个值。如果a=0,!a的结果是1;如果a是任何的非0值,!a的结果都是0.
!是按二进制对所有位取反。比如,2的二进制是00000010,按位取反得到11111101;9的二进制是00001001,按位取反得到11110110


int a = 2;
cout<<~a<<>
为什么会输出-3呢

2:0000 0010
取反:1111 1101   ->这是结果,在计算机中以补码形式存在,是一个负数,最高位为1.
求上面数的原码:取反 ,+1:0000 0011 为3,又因为是负数,所以为-3. 解决方案2:

~位运算操作符取反,!逻辑操作符

解决方案3:

引用 4 楼 u014520745 的回复:
Quote: 引用 2 楼 brookmill 的回复:

!是逻辑取反。对于逻辑运算符,只有true(1)和false(0)两个值。如果a=0,!a的结果是1;如果a是任何的非0值,!a的结果都是0.
!是按二进制对所有位取反。比如,2的二进制是00000010,按位取反得到11111101;9的二进制是00001001,按位取反得到11110110


int a = 2;
cout<<~a<<>
为什么会输出-3呢

整数是正还是负,是由符号位决定的。符号位就是整数的最高一位,正数的符号位是0,负数的符号位是1。一个整数按位取反之后,它的符号位也会取反,所以会改变正负。
楼主可以搜一下“补码”
http://blog.csdn.net/njuitjf/article/details/4585247
解决方案4:

http://blog.chinaunix.net/uid-25909722-id-2856108.html

解决方案5:

!是逻辑取反。对于逻辑运算符,只有true(1)和false(0)两个值。如果a=0,!a的结果是1;如果a是任何的非0值,!a的结果都是0.
!是按二进制对所有位取反。比如,2的二进制是00000010,按位取反得到11111101;9的二进制是00001001,按位取反得到11110110


以上介绍了“ 菜鸟学C++遇到的一些小问题,急急急!!”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3637161.html

相关图片

相关文章