sizeof既是关键字,又是运算符(操作符),但不是函数!

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

sizeof是关键字吗

        sizeof是关键字,这一点毋庸置疑。你不能将sizeof定义为任何标识符。查看C语言标准文档里的说明:



sizeof是运算符(操作符)吗

        C语言中,sizeof是运算符(操作符),而且是唯一一个以单词形式出现的运算符,它用来计算存放某一个量需要占用多少字节,它的结合性是从右到左。查看C语言标准文档里的说明:



sizeof是函数吗

        sizeof不是函数。产生这样的疑问主要是因为有时候sizeof的外在表现确实有点类似函数,比如:i = sizeof(int);这样的式子,就很容易让人误以为sizeof是一个函数呢。

但如果sizeof是函数,那么sizeof i;(假设i为int变量)这种式子一定不能成立,因为函数的参数不可能不用括号括起来。事实上这个sizeof i;可以正常运行,这就说明sizeof绝对不是函数


sizeof用法

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


        sizeof后面的括号可以去掉吗?如果是具体的量,无论常量还是变量,都可以直接写 sizeof 量,但如果是对类型进行运算,则必须加括号:


运行结果:

        注意上图出现的异常情况,这说明:sizeof面对直接量比如'A'、65等时,会将其默认转换为int类型计算,如果需要计算char或者short的直接常量大小,需要强制转换


小结

        对语法存疑时,其发布的标准文档是最具说服力的解释文件。


▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第六章 运算符与表达式 C运算符的分类: 算术运算符:+、-、*、/、%、++、-- 关系运算符;>、<、==、!=、>=、<= 逻辑运算符:&&、||、! 位操作运算符:位与&、位或|、位非~、位异或^、移<<、右移>> 赋值运算符:=、复合算术运算赋值(+=、-=、*=、/=、%=)、复合位运算赋值(&=、|=、^=、<<=、>>=) 条件运算符:?: 逗号运算符:, 指针运算符:取地址&、取内容* 求字节数运算符sizeof 其他运算符:()、下标[]、成员运算符(->、.) 6.1 概述 按运算符连接操作数分三类: 1.单目运算符:又称一元运算符,即只有一个操作数的运算符。负号-、正号+、自增++、自减--、非!、sizeof、指针运算符、部分位操作运算符。 2.双目运算符:又称二元运算符,连接两个操作数。大部分运算符属于此类。 3.三目运算符:连接三个操作数。C语言中唯一的三目运算符为条件运算符(?:)。 运算符有优先级和结合性。运算先后顺序受运算符的优先级和结合性制约。 表达式由常量、变量、函数运算符组成。单个常量、变量、函数调用形式可看作表达式的特例,称为初等表达式。运算符边的操作数称为操作数,右边的叫右操作数。 6.2 算术运算 1.整数运算 加减乘除运算、单目运算符负号-将整数符号取反。求余运算符%计算整数相除所得的余数,如11%4为11/4的余数3。 a.整数运算结果为整数。整数相除返回整数部分,舍去小数部分,编译器不同舍入方法不同。11/4结果是2,1/3结果为0,1/5*5结果不为1。 b.除法运算中除数不能为0,求模运算操作数必须为整型,因此不能进行除零和模零运算。 c.运算符的执行顺序由优先级决定,单目运算符负号-优先级高于加减乘除,乘除优先级高于加减。 可以用括号运算符标明或改变计算顺序,括号中的表达式总是先执行。四则运算符结合。 2.实数运算:实数运算的结果为实型。 3.字符运算

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值