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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2411|回復: 10
打印 上一主題 下一主題
收起左側

請教C語言中的程序算法理解問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:521921 發表于 2019-7-16 11:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
各位師兄,如下一段程序中,為什么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;
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:584967 發表于 2019-7-16 12:30 | 只看該作者
不同的編譯器運行環境不一樣吧,我用的DEV C++,運行結果就是3,2,1,9
回復

使用道具 舉報

板凳
ID:215929 發表于 2019-7-16 12:55 | 只看該作者
在線學習,哈哈
回復

使用道具 舉報

地板
ID:277550 發表于 2019-7-16 13:51 | 只看該作者
vc 2008/2015 都是

4,2,1,9
回復

使用道具 舉報

5#
ID:183159 發表于 2019-7-16 14:17 | 只看該作者
這是我的運行結果
4,2,1,9
a很顯然是4,p為什么是9,因為return(a+b+1)的時候,a=3,b=5,自然是9.
回復

使用道具 舉報

6#
ID:565305 發表于 2019-7-16 15:36 | 只看該作者
a 在前面定義成全局變量,但是在函數里頭又有同名的局部變量

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

雖然 dev c 用的是 gcc ,我猜想這個編譯器的思路是, 要想用到全局的 a 需要 ::a 方式 才能引用到吧
回復

使用道具 舉報

7#
ID:584980 發表于 2019-7-16 15:46 | 只看該作者
a是全局變量,在函數傳參時是值傳遞,其本身是不會被改變的,詳情百度 【值傳遞】【地址傳遞】區別
回復

使用道具 舉報

8#
ID:219796 發表于 2019-7-16 15:51 來自觸屏版 | 只看該作者
a是全局變量,調用子程序中a=b-1這句a=4-1被改變了值
回復

使用道具 舉報

9#
ID:473377 發表于 2019-7-16 16:28 | 只看該作者
我用的CODE:BLOCKS得到的結果是4.2.1.9,a可能是由于編譯環境不同而不同的,在main函數中p = func(b,a)就是將b = 2,a = 4賦給了func函數作為實參,即使得func中int a = 2,int b = 4,return返回的結果為9,即main函數中p等于9
回復

使用道具 舉報

10#
ID:565305 發表于 2019-7-16 18:34 | 只看該作者
sldx 發表于 2019-7-16 15:51
a是全局變量,調用子程序中a=b-1這句a=4-1被改變了值

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

所以這個是編譯器問題,我在 vc 兩個版本都試過是 4 2 1 9 ,而不是 dev c++ 的 3 2 1 9
回復

使用道具 舉報

11#
ID:388197 發表于 2019-7-16 18:39 | 只看該作者
這種風格的變量,函數命名老譚的書上最多.而且還沒有標準答案,不同的編譯器編譯出來的結果不一樣,如果不是為了考試,去鉆研這些問題實在是浪費時間,,趕快把老譚的C語言的書丟垃圾桶,讀讀<C PRIMER>避免這種問題很簡單, 注意不要把函數的傳遞參數和全局變量同名就好了,而且記住你是在寫程序不是在寫數學教材,變量 函數的名字應該有實際的含義.趁初學趕快把習慣憋過來,否則到后面壞習慣養成,想改就難了.
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表