一个比较有意思的C语言问题
2016-01-25 15:14
543 查看
先看代码吧,学习c语言结构体中看到的一个问题
输出结果是-2,一开始很意外,后来咨询了一下别人,发现结构体中int a:2;是表示a为2位有符号二进制数;
之后,x.a=1;x.a=x.a+1;这两句实现了二进制数相加,其实就是
01
+01
——
10
得出结果是10,10在有符号二进制数中表示成10进制数,其实是-2;而不是2.
#include<stdio.h> int main(){ struct{ int a:2; }x; x.a=1; x.a=x.a+1; printf("%d\n",x.a); return 0; }
输出结果是-2,一开始很意外,后来咨询了一下别人,发现结构体中int a:2;是表示a为2位有符号二进制数;
之后,x.a=1;x.a=x.a+1;这两句实现了二进制数相加,其实就是
01
+01
——
10
得出结果是10,10在有符号二进制数中表示成10进制数,其实是-2;而不是2.
相关文章推荐
- c++类默认拷贝构造函数---浅复制
- C++ template —— 动多态与静多态(六)
- 617C. Watering Flowers【几何】
- Boost 学习之算法篇 all_of 与 all_of_equal
- 快乐司机(贪心)
- 实例讲解C++编程中lambda表达式的使用
- C语言 百炼成钢14
- C++ template —— 模板特化(五)
- 重学C++ (九) 重载操作符与转换
- bign类C++高精度模板
- 结合C++11新特性来学习C++中lambda表达式的用法
- C++ template —— 实例化和模板实参演绎(四)
- c语言操作mysql
- 详细解读C++编程中的匿名类类型和位域
- C语言之字符串处理函数
- c++ study diary5
- C语言 百炼成钢13
- C,C++中使用可变参数
- [C++学习]奇怪的除法
- C++输入cin,cin.get(),cin.getline()详细比较及例子