C++中sizeof的一个特性
2018-03-06 12:55
225 查看
#include <iostream> using namespace std; int main() { int a = 1; cout << sizeof(a = 3) << endl; cout << a << endl; return 0; }
输出为4,1,而不是4,3
由输出可以知道,a 的值未被改变,也就是a = 3并未被执行。
原因就在于,C++中的sizeof()是一个宏,在编译阶段处理。由于sizeof不能被翻译成机器码,所以sizeof的作用范围内,也就是()里面的表达式不能被编译,而是被替换为类型,赋值操作符(=)返回左操作数的类型,所以 a=3在sizeof()看来就相当于int。
相关文章推荐
- sizeof不是函数,而是C/C++中的一个操作符(operator)
- 用C++写个程序,如何判断一个操作系统是16位还是32位的?不能用sizeof()
- c++模版的一个好玩的特性
- C++ const&的一个特性
- 用C++的高级模版特性实现一个不需要IDL的RPC
- 用C++的高级模版特性实现一个不需要IDL的RPC
- C++ 中不能被继承的类实现,及从中体现virtual 继承的一个特性
- 模板是C++的一个特性
- sol-v2.0 一个具有高级特性和出众性能的 C++&Lua 绑定库
- C++中的sizeof与strlen的一个重要区别
- C/C++ 结构体的一个高级特性 ―― 指定成员的位数
- 一个简单的程序教你区分C++中strlen与sizeof
- c++和java语言特性的不同(一个c++开发者眼中的java)
- “多态性”是C++最关键和核心的一个特性,“动态绑定技术”是C++编译器最重要的一个技术!欢迎C++高手进来指正我的粗浅理解
- C/C++ 结构体的一个高级特性 ―― 指定成员的位数
- 一个实例介绍C++复制控制(有一个C++11新特性要注意)——复制构造函数、赋值操作符、析构函数
- cocos2d-x C++ 利用C++11新特性+runAction RepeatForever Sequence DelayTime做一个持续循环函数 每秒更新 5次后停止
- sizeof乃C/C++中的一个操作符
- 使用C++ 11特性写一个简单的线程池
- 用C++写个程序,如何判断一个操作系统是16位还是32位的?不能用sizeof()函数?(不用sizeof()函数求当前主机上的一个int占用几个字节)