为什么打印uint8_t数组会显示不同的值?

时间:2017-01-26 21:06:24

标签: c integer byte sizeof

我从c编程开始,我想我不确定无符号的用法 变量。 我知道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@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]中得到不同的数字?

1 个答案:

答案 0 :(得分:4)

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

为了使您的程序表现良好,您需要在读取之前为变量赋值,例如:

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