zoukankan      html  css  js  c++  java
  • 你学C语言4年了都不知道的坑。(sizeof)你真坑,马化腾都笑了。

    先来看一段代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <stdio.h>

    int main(){
    int i = 1;

    printf("%d ",sizeof(i++));
    printf("%d ",i);

    return 0;
    }
    复制

      请问该段代码的输出是什么?
      首先sizeof是用于求数据类型内存大小的运算符,在VS中int占4字节,所以用sizeof求值以后应该是4,然后执行了i++,这样再输出i的值就应该是2。
      所以我的答案是:


    4

    2   

     

      然后…我就错了然后! (ÒωÓױ)
      正确答案应该是:


      这是为什么呢?原因如下:

      很多初学者可能都认为sizeof是函数,因为它的使用方法和函数很相似,其实不然,sizeof不是函数,它是一个操作符,如果查任何一本C语言教材中的操作符优先级表的时候我们都可以看到操作符sizeof的优先级是最高的。它的用法很简单,独处结果是操作数的所占内存的大小,操作数可以时int、char之类的数据类型,或者是变量。但关于sizeof的使用要小心,因为它在编译期就完成了计算,在函数运行时期它已经是一个常数值了。

      所以说sizeof(i++)中的i++是不会运算的。╮(╯▽╰)╭

  • 相关阅读:
    1062 Talent and Virtue (25 分)
    1083 List Grades (25 分)
    1149 Dangerous Goods Packaging (25 分)
    1121 Damn Single (25 分)
    1120 Friend Numbers (20 分)
    1084 Broken Keyboard (20 分)
    1092 To Buy or Not to Buy (20 分)
    数组与链表
    二叉树
    时间复杂度与空间复杂度
  • 原文地址:https://www.cnblogs.com/Alei777/p/12158494.html
Copyright © 2011-2022 走看看