gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 01:21:19 24 4
gpt4 key购买 nike

我刚开始使用 c 编程,我想我不确定 unsigned 的使用变量。我知道 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

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

最佳答案

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

为了让你的程序运行良好,你需要在读取它之前给变量赋值,例如:

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

关于c - 为什么打印 uint8_t 数组会显示不同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41882978/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com