unsigned 是等于 unsigned int
在 C/C++ 里,unsigned
单独写时,等价于 unsigned int
。
所以,unsigned
就是 unsigned int
的简写,但只适用于 int
类型。
unsigned x; // 等价于 unsigned int x;
unsigned int a;
#include <stdio.h>#define SAME_TYPE(a, b) _Generic(a, __typeof__(b): 1, default: 0)
int main(){unsigned x = 2; // 等价于 unsigned int x;unsigned int y = 2;if(x == y){printf("x == y\n");}else{printf("x != y\n");}if (SAME_TYPE(x, y)) {printf("x 和 y 的类型相同\n");} else {printf("x 和 y 的类型不同\n");}return 0;
}
执行结果
x == y
x 和 y 的类型相同
补充
这是语言标准规定的“简写”形式,其他类型(如 short
、long
、long long
)都不能这样省略关键字:
unsigned short y; // 不能写成 "unsigned y" 或 "short unsigned y"
unsigned long z; // 不能写成 "unsigned z"
坑~~~~~~~~ 大坑