① 怎样查看C/C++程序编译过后的结果
通常在项目下的obj文件夹里,二进制文件
② C语言同一段代码,同样的文件,编译器为什么运行结果不一样
有如下几种可能:
1 代码运行的平台硬件不同。
不同的CPU,如嵌入式CPU,intel CPU,以及IBM的CPU,在硬件最底层就是不同的,而C语言是一门和底层相关性极大的语言,在不同的硬件上运行出不同结果是很正常的。
2 代码运行的系统不同。
相同CPU在不同操作系统上跑相同代码时,一样会出现不同的结果。这是由于系统底层的实现不同造成的。比如Linux和Windows,在底层处理上就有一定的差异。
3 编译器不同,同时代码中使用了C规范未定义规则的语句。
C语言规范并没有对C语言的所有行为做定义,所以相同语句,不同编译器的运行效果可能有所不同。比如同样的sizeof(int),在16位编译器上结果为2,而32位编译器上就会是4。
4 代码获取到的外部数据不同。
比如运行代码时获取到的其它输入不同,包括程序中获取的环境变量,实时信息,以及各种外部输入等,均有可能出现不同。
比如在做随机数时,如果以当前时间设定随机数种子,由于每次的时间是不同的,同一个程序每次运行的结果都是不同的。
③ c++编译没问题,出来的结果怎么就是一个0,不是我想要的答案啊。。。。
for(int j=0;j!=3;j++);
{
scores[data[i][j]]+=j;
}
for(int n=0;n!=3;n++);后面多了个分号
for(int n=0;n!=3;n++)成了赋值语句,N=3
cout<<scores[n]<<endl;就只输出一个结果了
因为scores[3]={0,0,0};所以你前面的代码加来加去就是0
整段代码输出就只有个0喽
④ 一个程序通过了编译,并且得到了输出结果,这个结果是否一定正确为什么
不一定,好比如说你定义了一个有10个元素的数组,然后将另一个有11个元素的数组逐一赋值给它,程序中控制它正确赋值,最后输出第一个数组各元素的值,但是虽然通过了编译,也输出了结果,但是你还是没能把11个元素的都赋值过去,这就是达不到所想的赋值,当然是不正确的了。还有其他一些情况,当你的编程经历越多时就会碰到的了
⑤ 请教大家,这个编译出来,会是什么结果
应该是正常的编译,运行后就不是你预期的结果了,short应该是16位的,它所表示的最大的整数是:32767。初学先不必纠结这个。。。。我也是初学,呵呵。
⑥ 关于如何判断gcc之类的编译器的编译结果
我们再使用gcc编译的时候可以让他的输出信息保存到文件当中
gccmain.c-omain&>status.txt
上面的命令就是将gcc编译的信息保存到status.txt文件中,然后我们再程序中读取文件,看文件是否有内容,没有内容就说明没有报错和警告,编译成功。有内容就对每一行内容进行判断,看是warring还是error,只有warring也代表编译成功,有error代表编译失败,然后把这些报错信息都打印出来就好了。
下面看一下例子: