我从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]中得到不同的数字?
答案 0 :(得分:4)
读取未初始化变量的值是未定义的行为。换句话说,C编程语言的规则不描述或约束程序的行为方式。
为了使您的程序表现良好,您需要在读取之前为变量赋值,例如:
uint8_t value[4] = { 3, 19, 26, 1 };