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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的直接常量大小,需要强制转换。

小结

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

 

以上是关于sizeof既是关键字,又是运算符(操作符),但不是函数!的主要内容,如果未能解决你的问题,请参考以下文章

C语言中,sizeof运算符有啥作用?

如何使字段分隔符既是句号又是空格? (重击脚本)

C语言:从给出的数据中统计出既是回文数又是素数的数

细说关键字sizeof及其十大特性

sizeof运算符介绍以及常见的坑

静态成员