在IAR里面,为啥unsigned long只有16位数?
刚刚接触STM8,使用的环境是IAR For STM8 V1.301。里面定义了一个unsigned long的变量,实际运行的时候发现数据类型是16位的,造成溢出。
unsigned int,unsigned long long,unsigned long,发现都是16位的,这个怎么破?
在选项里面各种尝试都试过,没有解决问题。
额,对于STM8来说,我是个小菜鸟。不过单片机这玩意儿我已经玩了10多年了,虽然不是专职的。
51,PIC,MSP430都用的挺多的,STM32也用过。
按照我的理解,unsigned long就是32位整数。但是为啥这里死活就是只得16位数捏。。。。。。。。
你的怎么试的?unsigned long long型,必须不可能是16位。 toofree 发表于 2018-8-1 15:44
你的怎么试的?unsigned long long型,必须不可能是16位。
这个事情也颠覆了我的认识。
unsigned longVoltage;
Voltage = ADCData * 330;
在ADCData为838的时候,算出来的值应该是276540,但是监控发现算出来是14396。
276540 = 0x4383C
14396 = 0x383C。
也就是说,我只得到16位数。 本帖最后由 toofree 于 2018-8-1 17:05 编辑
long long显示是有点问题,其它的都可以
sizeof(unsigned long)等于多少? stm1024 发表于 2018-8-1 18:41
sizeof(unsigned long)等于多少?
不管是16位编译器tc还是32位编译器vc都是4个字节。 int在14位编译器下是2,32位编译器下是4 stm1024 发表于 2018-8-1 18:41
sizeof(unsigned long)等于多少?
仿真发现:
sizeof(unsigned long)等于4
sizeof(unsigned long long int)则显示无效
:funk: feixiang20 发表于 2018-8-2 01:44
不管是16位编译器tc还是32位编译器vc都是4个字节。 int在14位编译器下是2,32位编译器下是4 ...
sizeof只是想让他测试一下字节数。
原则上C没有规定int和long具体是多少位,只是规定long不小于int stm1024 发表于 2018-8-2 09:40
sizeof只是想让他测试一下字节数。
原则上C没有规定int和long具体是多少位,只是规定long不小于int ...
额,或者你能不能告诉我,在IAR里面有没有办法定义出来一个32位整数变量?我怎么折腾,都是16位。 本帖最后由 stm1024 于 2018-8-2 11:46 编辑
sunwah 发表于 2018-8-2 10:02
额,或者你能不能告诉我,在IAR里面有没有办法定义出来一个32位整数变量?我怎么折腾,都是16位。 ...
stdint.h,了解一下?
使用uint32_t试试?
页:
[1]
2