xcode编c语言执行结果为什么与vc结果不同?如果想让xcode编程结果与vc相同怎么设置?谢谢!

比如这段代码:
#include <stdio.h>
main()
{
printf("123456789012345678901234567890\n");
printf("123\t456\n");
printf("12345\b123\r9\n");
}

用xcode执行结果是:
123456789012345678901234567890
123456
12345123
9

但vc却是:

这到底是怎么回事啊?各位高手帮帮忙,本人变成小白一只,求指教。谢谢!

其实楼上说得很好了。但是导致这个结果应该是编译器和系统共同导致的问题。

VC的编译器是·Microsoft C,XCode的编译器则是可选的GCC,LLVM,Clang貌似都可以选。
\t是水平制表符,在不同的系统下显示情况是不同的,估计windows和mac os是不同的,我也不清楚具体是什么情况。换行和退格的解释在不同的系统下也是有可能不同的。
另外VC中printf语句从右至左,而Xcode中printf是从从左至右(某一个编译器,我也不清楚具体是哪个……)。

其实除了printf以外,这两个开发环境下自增运算也有很大的不同。有兴趣的话可以去试一试。
其实如果你不是在学习编译原理的话不用太在意这些问题,掌握好标准的C的语义就好了,这些东西实际编程中很少运用到的,关键是对语言本身的理解,编译环境什么的不用太在意,而且XCode的话主要还是学习Objective-C吧,这种问题还是别太纠结了。追问

谢谢!关键我们学校要学c,而我又不想换到windows下。。。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-16
我用VS2010运行过,结果和你所说的一样
首先第一句大家都是相同的,就没错了。
而第二句,VC是对的
因为\t代表的是水平制表符,是空几格的意思,而xCode居然没有空格,匪夷所思。
而第三句(第三、第四句)就说不定谁对了,因为12345\b123\r9\n的意思是,输出12345然后退格,然后输出123然后回到行首,然后输出9再换行。
而造成这种差异的原因是因为编译器的printf库函数对于\r\n的解释不同,这个如果想结果一样的话可以强制编译器遵守ANSI标准追问

谢谢,那么如何强制遵守ANSI标准呢?

追答

根据不同的编译器来设定,这个我也不清楚哦,百度一下。

本回答被提问者采纳
相似回答