#include <stdio.h>
int main(void)
{
getchar();
return 0;
}
在上面的示例代码中,如果用户输入了一个字符,那么它会发生什么 它会被放置在某个存储位置吗?
答案 0 :(得分:3)
阅读后肯定会将其丢弃。
让我们用一个简单的例子来理解它
int i = 1;
i++;
实际上第二个陈述会做什么。当它执行时,i
的值从内存中获取,但是没有其他变量可以赋值,并且它被丢弃,并且增量可以在前一个和下一个序列点之间的任何时间发生。
类似地,getchar();
将读取一个字符,但它将被丢弃,因为没有将此值分配给任何内存位置。
答案 1 :(得分:3)
从技术上讲,可能会发生的是字符代码将被getchar函数放入处理器寄存器中。通常,调用代码会将其复制到内存位置,但在您的示例中,它不会存储在内存中的任何位置(应该去哪里)。然后,不久之后,处理器寄存器将被其他一些数据覆盖。
因此,该值将被丢弃。
答案 2 :(得分:0)
很多可能会在幕后发生。
由于getchar()
是标准C标准I / O函数,因此很可能从缓冲流中读取。这意味着
简而言之,对函数返回值不执行任何操作都是完全理智的。它没有副作用。 C语言甚至提供(void)
强制转换来明确说明这种意图。