新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 单片机c语言教程:C51运算符和表达式(指针和地址运算符)

单片机c语言教程:C51运算符和表达式(指针和地址运算符)

作者:时间:2012-09-12来源:网络收藏

sizeof 符看上去这确实是个奇怪的符,有点像函数,却又不是。大家看到 size 应该就猜到 是和大小有关的吧?是的,sizeof 是用来求数据类型、变量或是的字节数的一个运 算符,但它并不像“=”之类符那样在程序执行后才能计算出结果,它是直接在编译时 产生结果的。它的语法如下:

sizeof (数据类型)

sizeof () 下面是两句应用例句,程序大家能试着编写一下。

printf(char 是多少个字节? ½ 字节n,sizeof(char));

printf(long 是多少个字节? ½ 字节n,sizeof(long));

结果是:

char 是多少个字节? 1 字节

long 是多少个字节? 4 字节

强制类型转换运算符 不知你们是否有自己去试着编一些程序,从中是否有遇到一些问题?开始学习时我就遇到过这样一个问题:两个不一样数据类型的数在相互赋值时会出现不对的值。如下面的一段小程序:

void main(void)

{

unsigned char a;

unsigned int b;

b=100*4;

a=b;

while(1);

}

这段小程序并没有什么实际的应用意义,如果你是细心的朋友定会发现 a 的值是不会等于100*4 的。是的 a 和 b 一个是 char 类型一个是 int 类型,从以前的学习可知 char 只占一个 字节值最大只能是 255。但编译时为何不出错呢?先来看看这程序的运行情况:

点击浏览下一页

图 9-3 小程序的运行情况

b=100*4 就能得知 b=0x190,这个时候我们能在 Watches 查看 a 的值,对于 watches 窗口我们 在第 5 课时简单学习过,在这个窗口 Locals 页里能查看程序运行中的变量的值,也能在 watch 页中输入所要查看的变量名对它的值进行查看。做法是按图中 1 的 watch#1(或watch#2),然后光标移到图中的 2 按 F2 键,这样就能输入变量名了。在这里我们能查看到 a 的值为 0x90,也就是 b 的低 8 位。这是因为执行了数据类型的隐式转换。隐式转换是 在程序进行编译时由编译器自动去处理完成的。所以有必要了解隐式转换的规则:

c语言相关文章:c语言教程




评论


相关推荐

技术专区

关闭