你能告诉我一个数字之后的'u'到底是什么,例如:
#define NAME_DEFINE 1u
Run Code Online (Sandbox Code Playgroud)
Lun*_*din 42
像1C代码中的整数文字总是类型int.int是一样的signed int.一个添加u或U(等效)文字,以确保它是unsigned int,以防止各种意外的错误和奇怪的行为.
这种错误的一个例子:
在16位机器上,int为16位,此表达式将导致负值:
long x = 30000 + 30000;
Run Code Online (Sandbox Code Playgroud)
30000个文字都是int,因为两个操作数都是int,结果将是int.16位signed int只能包含最多32767的值,因此会溢出.x因此会得到一个奇怪的负值,而不是预期的60000.
代码
long x = 30000u + 30000u;
Run Code Online (Sandbox Code Playgroud)
但是会按预期行事.
这是告诉编译器常量 1 应该用作无符号整数的一种方式。一些编译器假设任何没有后缀(如“u”)的数字都是 int 类型。为了避免这种混淆,建议在使用常量作为无符号整数时使用“u”等后缀。还存在其他类似的后缀。例如,对于浮点数,使用“f”。