网站开发工程师岗位描述,网站建设实训教程,wordpress能建立大型站吗,学院网站建设意义各位#xff0c;今天还是按照惯例给大家分享一个C语言容易出现的小错误#xff0c;这也是跟sizeof有关的#xff0c;问题虽小#xff0c;却可管中窥豹#xff0c;话不多说#xff0c;代码先行#xff1a;#include
int main()
{ int i; i 8; printf(%d\… 各位今天还是按照惯例给大家分享一个C语言容易出现的小错误这也是跟sizeof有关的问题虽小却可管中窥豹话不多说代码先行#include
int main()
{ int i; i 8; printf(%d\n,i); printf(%d\n,sizeof(i )); printf(%d\n,i); return 0;
}
问输出的值是什么如果你上来就说849 那就错了。当然第一个是8没问题第二个是4也没问题32位int类型为4主要错在了第三个数其实本题着重考察的是我们对sizeof的理解。首先我们要澄清一个误区sizeof不是函数不是函数不是函数重要的话说三遍它是一个关键字更准确地说它是一个单目运算符其运算符的含义是求出对象在计算机内存中所占用的字节数。根据C99的规范sizeof是一个编译时刻就起效果的运算符在其内的任何运算都没有意义所以sizeof(i )在编译的时候被翻译成sizeof((i 的数据类型))也就是4(32位int)换言之编译时sizeofi 就被4取代了因此当程序最终执行的时候sizeof里面不会有任何的i 运算所以i的值是不变的这就是本题想考察的点了。其次我们注意一下sizeof和strlen之间的区别请看以下代码#include
#include
int main()
{ char word[] xuedinge ; printf( %d ,strlen(word)); #8; printf( %d ,sizeof(word)/sizeof(char)); #9;
}其实只是牵涉到字符串的存储问题xuedinge字符串在存储的时候存储为x u d i n g e \0,总共占用了9个内存单元sizeof()计算的时候会将\0计算在内所以为9strlen只是计算长度不会把\0包括在内所以为8strlen为函数sizeof为运算符。当然关于sizeof还有其他许多用法和需要注意的地方比如它的对象可以是表达式或者数据类型名当对象是表达式时括号可省略等等。。。同时sizeof在各种笔试面试中出现的几率非常高希望大家对它进行熟练掌握今天这里我们就不展开了就到这里吧感谢各位的耐心阅读。声明本文于网络整理版权归原作者所有如来源信息有误或侵犯权益请联系我们删除或授权事宜。