我正在尝试调试的程序中有以下数组:
static u8 info3[LEN] = {
06,
07,
04,
00,
00,
01,
00,
0e,
03
};
我收到以下错误:
test.c(45): error C2021: expected exponent value, not ','
和第45行是包含 0e,
的行。根据{{3}}资源,
预期的指数值,而不是'字符'
用作浮点常数的指数的字符不是 有效的号码。请务必使用范围内的指数。
这告诉我编译器认为编译器认为info3
包含浮点值。但是那里的值实际上是2位十六进制数。
所以问题是这里应该使用哪种数据类型来存储在这个数组中的值?
答案 0 :(得分:5)
您应该在这些号码上添加0x
。
例如,0x01, 0x0e
或编译器不会将它们视为十六进制。
它在e
之后期望指数值的原因是因为你可以在C中使用科学记数法,例如float var = 1.54334E-34
。
答案 1 :(得分:1)
要在C中写入十六进制数字,请编写0x
后跟十六进制数字。因此,C中的两位十六进制数字看起来像
0x6a
0x0e
0xff
0x29
0xbc
编写0e
时,编译器会抱怨,因为该位置的e
表示“时间10”。例如
35e22
意味着35次10到22的力量和
1E9
是10亿(10倍到9倍的力量)。
如果你写
0e
它看起来像是........的零次,并且编译器抱怨因为你没有给出指数。
答案 2 :(得分:1)
在C中,任何以0开头的常量是八进制常量。因此,015
是八进制15
并且是十进制13
。此外,08
无效,因为没有八进制数的值不能大于8。
如果您想要十六进制常量,则应使用0x08
,0x0a
等。