C 中的整数促销 - 短与整数

时间:2021-03-23 10:56:53

标签: c type-conversion implicit-conversion

代码如下:

#include <stdio.h>

int main(int argc, char *argv[]){
        signed short signed_short = -1;
        unsigned short unsigned_short = 0;

        signed int signed_int = -1;
        unsigned int unsigned_int = 0;

        /*  Integral promotion rules promote to types 'int' and 'int'; Usual
        arithmetic rules don't need to do anything because types are the same.
        */
        if(signed_short < unsigned_short){
                printf("%hd < %hu\n", signed_short, unsigned_short);
        }else{
                printf("%hd > %hu\n", signed_short, unsigned_short);
        }

        if(signed_int < unsigned_int){
                printf("%d < %u\n", signed_int, unsigned_int);
        }else{
                printf("%d > %u\n", signed_int, unsigned_int);
        }
        return 0;
}

输出:

-1 < 0
-1 > 0

我想了解 C 中 Integer 提升的整个过程,这导致了导致结果的 signed int 、 unsignd int 与 short 和 unsigned_short 行为之间的差异。

0 个答案:

没有答案
相关问题