有关sizeof函数内部运算的问题

先来看大佬的一道题(有修改)

  #include <stdio.h>
  int main()
  {
  int i;
  i = 10;
  printf("%d\n", i);
  printf("%d\n", sizeof(++i));
  printf("%d\n", sizeof(i++));
  printf("%d\n", i);
  return 0;
  }

这三行应该输出什么?
答案为:
10
4
4
10

首先,这题有关int变量的字节长度(不同于字符串或字符数组)
int 变量无论在32位还是64位都是占4字节,也就是说不管是 i++ 还是 ++i 都无所谓(它还是个int变量,字节长度还是4)
但是为什么经过 i++ 和 ++i 之后,i 的值还是为10呢?


摘抄大佬的话:

我们来好好看看C++标准中的描述:

5.3.3 sizeof
The sizeof operator yields the number of bytes in the object representation of its operand. The operand is either an expression, which is an unevaluated operand (Clause 5), or a parenthesized type-id.

也就是说,如果sizeof的操作数是一个表达式的话,这个表达式时不会被计算的。
  sizeof当预处理看就行了,它后面括号里的东西,根本不求值,只根据C的一堆规则判断结果类型,然后返回结果类型的大小。另外一个操作符typeid(暂时还不会。。)也是如此。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值