gpt4 book ai didi

c - 受类型转换影响的变量

转载 作者:行者123 更新时间:2023-11-30 18:28:52 26 4
gpt4 key购买 nike

我一直认为,当变量被类型转换时,会产生它的副本,并且任何更改都会影响该临时变量。但是,下面的屏幕截图表明情况并非如此。显然,改变的是原始变量。为什么?我很好奇,因为我从未见过类似的东西。

screenshot

最佳答案

sprintf 将其输出到提供的缓冲区中的字符串以 null 终止。由于 %010lu 格式说明符要求填充的数字长度至少为 10 位数字,因此您会不断溢出 crc_buf 并触发 UB。在您的具体情况下,crc 的最低有效字节会被破坏。

使crc_buf为11个字符或更多,并使用snprintf而不是sprintf来捕获此类错误。为了获得最大的可移植性,您还可以使用 PRIu32 格式宏而不是转换:

snprintf(crc_buf, sizeof crc_buf, "%10" PRIu32, crc);

关于c - 受类型转换影响的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44145733/

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