【发布时间】:2015-03-11 02:38:29
【问题描述】:
枚举在 C 中是有符号的还是无符号的?我正在使用 Gcc 编译我的程序,我得到 2 个带有枚举值的结果,如下代码:
typedef enum test_e
{
zero,
one,
two,
three,
}test_t;
void compare_func(test_t var)
{
printf("\n [1] my number is %d \n", var);
if ( var > 0)
printf(" %d > 0 \n", var);
else if ( var < 0)
printf(" %d < 0 \n", var);
}
typedef enum test_nega_e
{
zero_nega,
one_nega = -1,
two_nega = -2,
three_nega = -3,
}test_nega_t;
void compare_nega_func(test_nega_t var_nega)
{
printf("\n [2] my number_nega is %d \n", var_nega);
if ( 0 < var_nega)
printf(" %d > 0 \n", var_nega);
else if ( 0 > var_nega)
printf(" %d < 0 \n", var_nega);
}
int main (void)
{
test_t my_number;
test_nega_t my_number_nega;
my_number = -1;
compare_func(my_number);
my_number_nega = -1;
compare_nega_func(my_number_nega);
return 0;
}
结果是:
[1] my number is -1
-1 > 0
[2] my number_nega is -1
-1 < 0
所以“my_number”是无符号的,而“my_number_var”是有符号的?谢谢
【问题讨论】: