printf

以下功能定义如何工作?

上面提到的代码块可以在VisualStudio8编译器上编译,尽管输出是垃圾值.但是当我在gcc-4.3.4中编译相同的代码时,我收到以下编译错误:prog.c:2:warning:returntypeof‘main’isnot‘int’prog.c:8:error:conflictingtypesfor‘fun’prog.c:3:error:prevIoUsdeclarationof‘fun’w

有人可以解释这个行为?只有2行代码

4个请仔细解释一下这段代码:输出:你好世界!返回13解决方法它是编译器特定的.你得到这个行为与GCC.这里有一些细节.因为你#include,这个放置是C99的标准,重新定义是undefinedbehavior>GCC编译器有一些优化将一些printf转换成一系列更快的put.这是合法的,因为您已经包括如果您使用-freestanding编译,则不会观察到.你的问题非常接近thisone;所以thisanswer也是有关系的.

c – sprintf没有在范围内声明?

我有一个小代码片段,我设计的东西,但我不断得到错误sprintf没有在范围内声明?我在我的妈妈在VS上工作,但回到家,我不能得到它的代码块解决方法您需要包含stdio.h.stdio.h声明函数sprintf,没有标题,编译器没有办法了解什么sprintf的意思,因此它给你的错误.在C注意,包括cstdio在std命名空间和全局命名空间中导入符号名称.包括stdio.h在全局命名空间中输入符号名称,可能在std命名空间中.这同样适用于所有c风格的标题.

C控制台输出问题

我以为这个程序应该打印1然后挂起.但它没有打印任何东西,只是挂了.cout

c – 为什么写写比我讲的更多?

写入设置为25755,我告诉fwrite写一个文件,这是开头,然后im在一个位置除了25755以外的许多字节?解决方法如果您使用的是DOSish系统,并且文件未以二进制模式打开,则会自动转换行尾,并且每个“行”将添加一个字节.所以,指定“wb”作为模式,而不是只是“w”,因为@caf指出.它将对Unix平台没有影响,并且会对其他人做正确的事情.例如:用VC:用Cygwingcc:

为什么case:总是需要常量表达式,而if()不是?

可能重复,但找不到相同的.假设我有以下C代码:我得到一个案例来检查a是零还是非零.一切都很好使用if-else,我也知道if-else的其他变体来实现这一点.但是问题来自于switch-case,因为它说我们可以在switch-case中实现我们可以在if-else中执行的所有操作.但以下代码失败.另外我知道在上面的代码中反转这个例子,如下所示将工作,我将有我的答案.但问题是,为什么?为什么在案件a:不是有效的情况下?switch-case是一个编译时操作和if()运行时?

c – 在程序出口处的printf flush

我有兴趣知道当程序退出时printf()函数的flush如何工作.我们来看下面的代码:在这种情况下,printf()如何管理将其缓冲区刷新到stdout?我想这是平台依赖,所以让我们来看Linux.它可以使用gcc的__attribute__来实现,但是标准库将依赖于编译器.我认为这不是它的工作方式.任何解释或链接到文档是赞赏.谢谢.解决方法当调用exit()时,C运行时将注册atexit()处理程序来刷新标准缓冲区.看这个explanation.