C语言同一段代码,同样的文件,编译器为什么运行结果不一样? C语言同一段代码运行结果不一样

\u4e3a\u4ec0\u4e48\u540c\u4e00\u6bb5\u4ee3\u7801\u5728IDEA\u548cEclipse\u4e4b\u4e2d\u8fd0\u884c\u7684\u7ed3\u679c\u4e0d\u4e00\u6837

\u53ef\u4ee5\u53c2\u8003\u4e0b\u9762\u539f\u56e0
\u5728IDEA\u4e0b\u9762\uff0c\u76f8\u5bf9\u8def\u5f84\u9ed8\u8ba4\u4e3aProject\u8def\u5f84\u6216\u8005Module\u8def\u5f84\uff0c\u6240\u4ee5\uff0c\u5982\u679c\u8981\u4e48\u628aimages\u6587\u4ef6\u5939\u548c.idea\u6587\u4ef6\u5939\u540c\u7ea7\u522b\u7684\u76ee\u5f55\u4e0b\uff0c\u6216\u8005\u5c31\u662f\u653e\u5728\u66f4\u6df1\u5c42\u6b21\u7684\u6587\u4ef6\u5939\u4e4b\u4e2d\uff0c\u4f46\u662f\u8981\u5728images\u6587\u4ef6\u5939\u5728\u521b\u5efafile\u6216\u8005\u5f97\u5230path\u7684\u65f6\u5019\u8981\u628a\u5b83\u6240\u5728\u7684\u9ad8\u5c42\u6b21\u7684\u76ee\u5f55\u4f53\u73b0\u51fa\u6765\uff0c\u8fd9\u6837\u5c31\u4e0d\u4f1a\u51fa\u73b0\u6587\u4ef6\u65e0\u6cd5\u8bfb\u53d6\u7684\u60c5\u51b5\u4e86\u3002

\u56fe\u4e00\u672c\u6765\u5c31\u662f\u6b63\u5e38\u7684\uff0c\u4e0d\u53ef\u80fd\u7531\u4ee3\u7801\u5f15\u8d77\u5d29\u6e83\u3002\u5d29\u6e83\u53ea\u53ef\u80fd\u662f\u5176\u4ed6\u539f\u56e0\u5f15\u8d77\u7684\u3002

有如下几种可能:
1 代码运行的平台硬件不同。
不同的CPU,如嵌入式CPU,intel CPU,以及IBM的CPU,在硬件最底层就是不同的,而C语言是一门和底层相关性极大的语言,在不同的硬件上运行出不同结果是很正常的。

2 代码运行的系统不同。
相同CPU在不同操作系统上跑相同代码时,一样会出现不同的结果。这是由于系统底层的实现不同造成的。比如Linux和Windows,在底层处理上就有一定的差异。

3 编译器不同,同时代码中使用了C规范未定义规则的语句。
C语言规范并没有对C语言的所有行为做定义,所以相同语句,不同编译器的运行效果可能有所不同。比如同样的sizeof(int),在16位编译器上结果为2,而32位编译器上就会是4。

4 代码获取到的外部数据不同。
比如运行代码时获取到的其它输入不同,包括程序中获取的环境变量,实时信息,以及各种外部输入等,均有可能出现不同。
比如在做随机数时,如果以当前时间设定随机数种子,由于每次的时间是不同的,同一个程序每次运行的结果都是不同的。

不同的编译器编译的结果本来就可能不一样,就像搞翻译一样,同一段文字,不同的人翻译出来肯定不会是一模一样的。如果你希望在不同平台上运行结果一样,那你首先要了解清楚每个编译器底层的特点,然后根据平台特点将你的代码写成通用版本。你问怎么样修改,我只能说你必须先了解清楚两个编译器。
C语言程序设计的书里应该讲过,int变量在不同平台上所占的位数是不一样的,就这一点就说明:平台不同,同一段代码运行出来结果就可能不一样。

TC2.0的int是16位的, 而VC的int是32位, 所以要TC2.0运行正常,把变量定义改为long int就行了。

  • 涓轰粈涔,鍚屼竴娈礳璇█鍐欑殑浠g爜鍦╲c鍜寁s2012涓婇潰閮借兘瀹岀編杩愯,鑰屽湪C...
    绛旓細鏈夊彲鑳芥槸涓嶆敮鎸佷腑鏂鏂囦欢鍚嶏紝浣犲皢鏂囦欢 婧.c 鏀逛负鑻辨枃鍚嶈瘯璇
  • 鍚屾牱鐨凜璇█浠g爜,涓轰粈涔堝湪VC涓嬪紕濂界殑.exe鎵ц鏃舵樉绀哄唴瀛橀敊璇屽湪DEV-c...
    绛旓細缂栫▼鐜鍥犵礌锛屾湁鏃舵帶鍒跺彴鍜屽浘褰㈢晫闈㈢殑宸紓涔熷奖鍝嶃
  • C璇█涓鎴戞兂鍦鏂囦欢涓悓鏃惰繘琛岃鍐欐搷浣
    绛旓細姣斿鏂囦欢鍘熸潵鍐呭鏄細12 34 56 灏12璇诲嚭锛屾敼鎴3鍚庯紝缁撴灉鍙樻垚浜嗭細32 34 56 骞朵笖鐢╢seek鏉ユ敼鍙樻枃浠舵寚閽堜篃浼氭湁寰堝闂銆備负浜嗛伩鍏嶈繖涓棶棰橈紝鍙互鍏堝皢鏂囦欢璇诲叆锛屼慨鏀瑰悗鍐欏埌鍙涓涓鏂囦欢涓紝璇诲畬鏂囦欢鍚庡垹闄よ繖涓鏂囦欢锛鍐嶆妸鍙︿竴涓枃浠舵敼鎴愯繖涓枃浠剁殑鍚嶅瓧銆傜粰娈电畝鍗曠殑浠g爜浣犵湅鐪 int main(){ FILE *pin, ...
  • C璇█,寰堢畝鍗曠殑涓娈典唬鐮,涓轰粈涔堜細鍑洪棶棰?姹傚ぇ绁炶В绛!!!
    绛旓細鏂囦欢娌℃湁鍏抽棴銆傛枃浠跺彞鏌勫湪浣跨敤鏃舵墦寮锛屽湪浣跨敤缁撴潫鍚庡簲璇ュ強鏃跺叧闂
  • 濡備綍鐢C璇█鍚屾椂璇昏繘鍑犱釜鏂囨湰鏂囦欢,姣斿1000涓pdb鏂囦欢,鎴戣杩涜鍚屾牱鐨澶...
    绛旓細3.鐢ㄥ绾跨▼鎶鏈紝缁堜簬鎬庝箞鐢紝缃戜笂鏈夌敤娉曪紝寰堢畝鍗 1.姣斿1000涓枃浠讹紝瀹氫箟涓涓簩缁存暟缁刢har [1000][MAX_PATH];2.璇诲彇鍖呭惈鏈夋枃浠跺悕鐨勬枃浠讹紝璇诲叆鎵鏈夋枃浠跺悕绉板埌璇ユ暟缁勪腑锛3.鍒嗛厤闂锛屼綘鍙互寮鍚10涓嚎绋嬶紝姣忎釜绾跨▼澶勭悊100涓枃浠讹紝鎬庝箞鍒嗛厤浣犺嚜宸卞畾涔 灏辨槸涓嶈鏈変袱涓嚎绋嬪鐞鍚屼竴涓鏂囦欢灏卞ソ銆
  • C璇█缂栬瘧杩囩▼璇﹁В
    绛旓細C璇█缂栬瘧杩囩▼璇﹁ВC璇█鐨缂栬瘧閾炬帴杩囩▼鏄鎶婃垜浠紪鍐欑殑涓涓狢绋嬪簭(婧愪唬鐮)杞崲鎴愬彲浠ュ湪纭欢涓婅繍琛岀殑绋嬪簭(鍙墽琛屼唬鐮),闇瑕佽繘琛岀紪璇戝拰閾炬帴銆傜紪璇戝氨鏄妸鏂囨湰褰㈠紡婧愪唬鐮佺炕璇戜负鏈哄櫒璇█褰㈠紡鐨勭洰鏍鏂囦欢鐨勮繃绋嬨傞摼鎺ユ槸鎶婄洰鏍囨枃浠躲佹搷浣滅郴缁熺殑鍚姩浠g爜鍜岀敤鍒扮殑搴撴枃浠惰繘琛岀粍缁囧舰鎴愭渶缁堢敓鎴愬彲鎵ц浠g爜鐨杩囩▼銆傝繃绋嬪浘瑙e涓: 浠...
  • 鍦ㄧ嚎绛c璇█鍏充簬鏂囦欢鐨勪竴娈典唬鐮!濂界殑杩藉姞
    绛旓細鍛 淇濊瘉鍚嶅瓧鏄痩ist鏂囦欢, 娌℃湁鍚庣紑!include <stdio.h> define TRUE 1 int main(){ char szData[ 256 ], szFileName[32] ;FILE *fList = fopen("list", "r");int nSel, nIndex;if( !fList ){ puts("Error, can not find the file named list.");return 1;} szData[255] = 0...
  • c璇█濡備綍鎶c绋嬪簭缂栬瘧鎴愬彲鎵ц鐨別xe鏂囦欢
    绛旓細1銆佺紪鍐涓娈绠鍗曠殑浠g爜锛濡備笅鍥炬墍绀猴紝缂栬緫涓娈电畝鍗曠殑杈撳嚭璇彞銆2銆佷緷娆$偣鍑昏彍鍗曟爮鍐呯殑缂栬瘧鈫掔粍寤衡啋鎵ц锛岀‘淇濊繖娈垫垚鐜囧彲浠ユ纭墽琛屻3銆佷粠杩愯缁撴灉鏉ョ湅绋嬪簭姝g‘锛屾病鏈夐棶棰橈紝鐒跺悗鎵惧埌exe鍙墽琛岀▼搴忕湅鍏舵槸鍚︽湁闂鐜拌薄銆4銆佸皢C璇█浠g爜淇濆瓨鍚庢墦寮浠g爜鎵鍦鐨勬枃浠跺す锛璇ユ枃浠跺す鍐呮湁涓涓鍚嶄负銆怐ebug銆戠殑鏂囦欢...
  • C 璇█涓鏈夎皟鐢ㄥ叧绯荤殑鎵鏈夊嚱鏁伴兘蹇呴』鏀惧湪鍚屼竴婧愮▼搴鏂囦欢涓庝箞...
    绛旓細鍥犱负褰撻渶瑕佺敤鍒板彟涓涓嚱鏁扮殑鏃跺欙紝缂栬瘧鍣ㄤ細鍦ㄦ湰鏂囦欢涓鎵鹃渶瑕佺殑鍑芥暟锛屽鏋滀笉鏀惧湪涓涓枃浠閲屽氨浼氬鑷寸▼搴忎腑鏂紝鎵浠ユ湁璋冪敤鍏崇郴鐨勬墍鏈夊嚱鏁伴兘蹇呴』鏀惧湪鍚屼竴婧愮▼搴忔枃浠朵腑锛屾瘮濡傛湁涓や釜鍑芥暟 A()鍜孊()锛岄偅涔堝鏋滃湪A鍑芥暟涓璋冪敤B鍑芥暟鐨勮瘽锛孉鍑芥暟蹇呴』瑕佽兘鍦ㄦ湰鏂囦欢涓壘鍒癇鍑芥暟锛岃繖鏍锋墠鑳芥壘鍒拌鍑芥暟鐨勫湴鍧 ...
  • 涓轰粈涔鍚屾牱鐨刢璇█浠g爜,鍦鍚屼竴鍙扮數鑴戜笂鐨勭紪璇戣蒋浠秜isual c++6.0鍜寁s...
    绛旓細缂栬瘧鐨勭幆澧冧笉鍚岋紝鍙兘杈撳嚭寰楃粨鏋滀笉鍚
  • 扩展阅读:扫一扫题目出答案 ... cnc加工中心代码大全 ... 编程必背100个代码 ... 初学编程100个代码大全 ... c++编程代码大全 ... c++常用头文件大全 ... 吓人的编程代码 ... 免费复制100个代码 ... 黑客编程必背50个代码 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网