C语言 为什么打印uint8_t数组它显示不同的值



我从c编程开始,我想我不确定使用unsign的变量。我知道uint8_t是一个无符号的 8 位整数类型,这意味着它不能是负数,因此将所有 8 位留给正数,这表示从 0 到 255 的数字。但我不知道为什么如果我写这个:

int main() {
 uint8_t value [4]; 
 printf("nvalue:t%" PRIu8 "", value[0]);
 printf("nvalue:t%" PRIu8 "", value[1]);
 printf("nvalue:t%" PRIu8 "", value[2]);
 printf("nvalue:t%" PRIu8 "", value[3]);
 printf("n");
}

每次我做的时候我都会得到不同的结果:./测试:

test@test:~/Desktop$ ./test
value:  48
value:  99
value:  13
value:  193
test@test:~/Desktop$ ./test
value:  176
value:  76
value:  71
value:  0
test@test:~/Desktop$ ./test
value:  64
value:  13
value:  5
value:  175

为什么我在值[x]中得到不同的数字?

读取未初始化变量的值是未定义的行为。换句话说,C 编程语言的规则不描述或约束程序的行为方式。

为了使程序运行良好,您需要在读取变量之前为其赋值,例如:

uint8_t value[4] = { 3, 19, 26, 1 };

最新更新