|
|
1
3
当您的程序用户输入的某些输入无法通过
然而,未定义的行为确实如此 不 保证程序崩溃。它可能崩溃或继续执行。我们不知道会发生什么,因为它是不确定的。在您的系统上继续执行,但在另一个系统上可能会发生程序。
在许多系统上,在启动时分配给程序的内存被初始化为全零。因此,变量
所以即使你没有初始化
然而,从标准的角度来看,读取未初始化的浮点变量仍然是未定义的行为 如果在多次调用的函数内执行相同的操作(其间还有其他函数调用),迟早会看到奇怪的行为。 通常只是奇怪值的打印,但在某些系统上,您可能会看到崩溃(但这种情况更为罕见)。
|
|
|
2
2
用户在C中提供的每个输入都被视为字符串,尽管您提供的输入是数字。从用户获得输入后,使用atoi(ascii到整数)函数将其转换为数字数据( man atoi ). 此函数的返回值是转换后的值。成功将给定字符串转换为整数后,返回转换后的整数值,当结果值为非整数时,返回零。这就是为什么当您输入不同的数据时,它没有显示任何错误的原因。 使用不同的格式说明符尝试相同的代码,以便您能够清楚地理解。 |
|
|
4
1
程序不会崩溃,因为输入不会导致崩溃。
应该是:
换句话说,始终检查系统功能是否存在错误,尤其是那些正在执行输入的功能。 |
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 1 年前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 1 年前 |
|
|
Bobby · 复合字面值总是左值吗? 1 年前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 1 年前 |