我对以下代码感到很困惑:
#include <stdio.h>
#include <stdint.h>
int main(int argc, char ** argv)
{
uint16_t a = 413;
uint16_t b = 64948;
fprintf(stdout, "%u\n", (a - b));
fprintf(stdout, "%u\n", ((uint16_t) (a - b)));
return 0;
}
返回:
$ gcc -Wall test.c -o test
$ ./test
4294902761
1001
$
似乎表达式 (a - b) 的类型为 uint32_t。我不明白为什么,因为两个运算符都是 uint16_t。
谁能给我解释一下?