C语言中这个数据类型加括号是啥意思?

发布网友

我来回答

4个回答

热心网友

最外层括号是给预处理程序看的,让程序在预处理时把((uint) 0x00)看作一个整体, 内层括号的意思是将0x00(有符号类型)强制转换为无符号类型。
如果有一个语句 int x = IN_OUT_PUT_M1 ,预处理后的结果就是 int x = (uint) 0x01, 至于为什么这么写?我也不清楚。可能是这个系统不允许接收负数,为了安全起见。因为你如果定义了
# define IO_IN_OUT_PUT_M1 ((uint) -1) (假设是8位int类型),那么程序在编译后的真正结果应该是255。
至于为什么用16进制数,当然是为了方便。例如:0x01,对应着二进制数 0000 0001,0x0f = 0000 1111 0xff = 1111 1111 每位16进制位,对应4位二进制位。这在写底层的时候太直观了。

热心网友

强制类型转换运算,将后面的常量强制转换为unsigned int类型

热心网友

#define定义宏,宏就是替换,这里宏名就是IO_IN_OUT_PUT_M0和IO_IN_OUT_PUT_M1。

你在代码里写宏名,预编译时会将代码里的宏名替换成后面对应的内容。

这里有没有括号,宏名对应的值都是一样的,区别就是替换的时候带不带括号

比如,在一个公式中(1+2)*3和1+2*3 结果会有区别,那么我定义宏#define M 1+2和#define M (1+2),替换后明显影响运算结果。

后面16进制数,就是0个1,在这里应表示的是IO口对应的两种状态。

热心网友

你不会连“强制类型转换”这个概念都没听说过吧?

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com