gpt4 book ai didi

c - 为什么变量声明的顺序很重要?

转载 作者:行者123 更新时间:2023-12-02 05:32:58 25 4
gpt4 key购买 nike

我是 C 的新手,我有一个小函数,它读取一个简单数学运算 (+,-,*,/) 的输入,然后相应地计算结果,如果输入不正确则返回 -nan。

float simple_math(void) {
float a, b;
int char_c;
int ret_a;


ret_a = scanf("%f %c %f", &a, &char_c, &b);
float result;

if (char_c == '+')
result = a + b;
else if (char_c == '-')
result = a - b;
else if (char_c == '*')
result = a * b;
else if (char_c == '/')
result = a / b;
else
result = 0.0 / 0.0;

return result;
}

这段代码工作得很好。但是,如果我更改前两行的顺序,则返回值为 -nan。

int char_c;
float a, b; // this was originally the first line
int ret_a;

为什么变量声明的顺序很重要?

最佳答案

int char_c;

应该是

char char_c;

%c 用于扫描字符而不是 int 因此您的 scanf 将导致未定义的行为。

未定义行为的副作用是有时事情会按预期进行。所以请摆脱未定义的行为,它与变量定义的顺序无关。

关于c - 为什么变量声明的顺序很重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30456597/

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