欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 請教C語言中的程序算法理解問題 [打印本頁]

作者: WGL88    時間: 2019-7-16 11:37
標題: 請教C語言中的程序算法理解問題
各位師兄,如下一段程序中,為什么a = 3,而不是4呢? p=9又是怎么算來的?麻煩幫小弟理解下這段程序的算法,謝謝!

#include<stdio.h>
int c, a=4;
int func(int a, int b)
{
   c = a*b;
   a = b-1;
   b++;
   return(a+b+1);
}
void main()
{
int b=2,p=0,c=1;
p = func(b , a);
print("%d,%d,%d,%d\n",a,b,c,p);
}


程序運行結果為:3,2,1,9;

作者: 木木噠的木木    時間: 2019-7-16 12:30
不同的編譯器運行環(huán)境不一樣吧,我用的DEV C++,運行結果就是3,2,1,9
作者: Evan.LRW    時間: 2019-7-16 12:55
在線學習,哈哈
作者: devcang    時間: 2019-7-16 13:51
vc 2008/2015 都是

4,2,1,9
作者: xujing    時間: 2019-7-16 14:17
這是我的運行結果
4,2,1,9
a很顯然是4,p為什么是9,因為return(a+b+1)的時候,a=3,b=5,自然是9.
作者: egypt    時間: 2019-7-16 15:36
a 在前面定義成全局變量,但是在函數(shù)里頭又有同名的局部變量

按道理 全局變量為大; 局部變量只影響它所在的域,試過一下 vc6 vc2013 都是很標準的 a=4 , 符合常規(guī)思路

雖然 dev c 用的是 gcc ,我猜想這個編譯器的思路是, 要想用到全局的 a 需要 ::a 方式 才能引用到吧
作者: xldz    時間: 2019-7-16 15:46
a是全局變量,在函數(shù)傳參時是值傳遞,其本身是不會被改變的,詳情百度 【值傳遞】【地址傳遞】區(qū)別
作者: sldx    時間: 2019-7-16 15:51
a是全局變量,調用子程序中a=b-1這句a=4-1被改變了值
作者: 460142704    時間: 2019-7-16 16:28
我用的CODE:BLOCKS得到的結果是4.2.1.9,a可能是由于編譯環(huán)境不同而不同的,在main函數(shù)中p = func(b,a)就是將b = 2,a = 4賦給了func函數(shù)作為實參,即使得func中int a = 2,int b = 4,return返回的結果為9,即main函數(shù)中p等于9
作者: egypt    時間: 2019-7-16 18:34
sldx 發(fā)表于 2019-7-16 15:51
a是全局變量,調用子程序中a=b-1這句a=4-1被改變了值

你可能漏看了 int func(int a, int b)  這個地方,在入口參數(shù)處定義了 int a 這個局部變量

所以這個是編譯器問題,我在 vc 兩個版本都試過是 4 2 1 9 ,而不是 dev c++ 的 3 2 1 9
作者: cjm82    時間: 2019-7-16 18:39
這種風格的變量,函數(shù)命名老譚的書上最多.而且還沒有標準答案,不同的編譯器編譯出來的結果不一樣,如果不是為了考試,去鉆研這些問題實在是浪費時間,,趕快把老譚的C語言的書丟垃圾桶,讀讀<C PRIMER>避免這種問題很簡單, 注意不要把函數(shù)的傳遞參數(shù)和全局變量同名就好了,而且記住你是在寫程序不是在寫數(shù)學教材,變量 函數(shù)的名字應該有實際的含義.趁初學趕快把習慣憋過來,否則到后面壞習慣養(yǎng)成,想改就難了.




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1