gpt4 book ai didi

c - 了解 atoi(var-1) 与 atoi(var)-1?

转载 作者:太空宇宙 更新时间:2023-11-04 05:56:28 26 4
gpt4 key购买 nike

我有一个问题,我的 C 程序只为小于 5 的值正确分配了输入数据。我发现在创建保存值的 int 数组时出错:我使用了 atoi(var-1) 而不是 atoi(变种)-1。

当var='5'时,打印出来的atoi(var-1)为0。为什么数字“5”是错误的 char 到 int 转换中断的地方?为什么它在那一点变成零?

我只是好奇这到底发生了什么。

最佳答案

当您编写 atoi(var - 1) 时,其中 var 是一个 char*,您是在询问函数 atoi 读取从内存位置比 var 低一位开始的字符串,并将其转换为整数。

一般来说,位于较低内存地址的字符可以是任何东西。当您的 char*'5' 时,您只是碰巧让它中断了,但它可能发生在任何地方。

另一方面,atoi(var) - 1 完全符合您的预期,将 var 转换为 int,然后减去 1数字上。

关于c - 了解 atoi(var-1) 与 atoi(var)-1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26478044/

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