sizeof的小知识

一;
先来点劲爆的开胃菜吧;表示这个知识我也是今天才知道的;
先看一个代码来猜猜他的输出结果吧;

#include<stdio.h>
int main()
{
    int x = 1;
    sizeof(x++);//或者++x;
    printf("%d\n",x); //求x的大小;

    return 0 ;
} 

赶紧编译一遍吧;会让你吃惊的;
编译的结果始终是1;中间那个x操作根本就没有执行;是不是很惊讶哈;
来解释一下吧;
1;sizeof运算在属于编译处理;是在程序运行前就执行了的;所以当程序运行到的时候就不会再运行了;
因此其x的值没有变;因为根本就没有执行这条语句;它是在编译的时候就运行了的;
2;想想是不是不对;怎么可能预处理;第二个知识点;就是sizeof括号里面的表达式或者数值什么的都会自动转换成其数据类型并且计算出作为常量;至于他怎么预处理得到的就不归我们管了;
这个新知识点就到这了;来回忆一下sizeof的常规知识点吧;
二;
1;sizeof是唯一一个运算符类型的关键字;
sizeof的那个括号有时候可以省略;当直接赋值时;列如;
这里写图片描述

2;sizeof顶着关键字的光环,发挥着(单目)运算符的作用。它主要用来计算某一个量在当前系统中所需占用的字节数:

这里写图片描述
说一下;
struct;它的大小是有其成员的大小之和的;
union;它的大小是其成员的最大的那个;比如图片中的8就是因为double最大;为8;所以它的大小也为8;

3;c语言中类型的转化;
例如;‘a’就会自动变为int型输出4;65为int;65.0为double;65,0f为float;
这里写图片描述
那个字符的自动转换可能编译器原因吧;;;;;;

4;还了解一点;对于指针的sizeof其大小都是4;(重点);

至于关于数组,字符串,以及指针的详情下次与strlen和sizeof一起讨论吧;这两个经常搞混的;

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值