在 C/C++ 里,unsigned
单独写时,等价于 unsigned int
。
所以,unsigned
就是 unsigned int
的简写 ,但只适用于 int
类型。
c
unsigned x; // 等价于 unsigned int x;
unsigned int a;
c
#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;
}
执行结果
c
x == y
x 和 y 的类型相同
补充
这是语言标准规定的"简写"形式,其他类型(如 short
、long
、long long
)都不能这样省略关键字:
c
unsigned short y; // 不能写成 "unsigned y" 或 "short unsigned y"
unsigned long z; // 不能写成 "unsigned z"
坑~~~~~~~~ 大坑