第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

請(qǐng)麻煩給解釋下

#include<stdio.h>

int a(int b)

{

? ? int c;//階乘結(jié)果

? ? if(b<0)

? ? {

? ? ? ? printf("輸入錯(cuò)誤!\n");


? ? }

? ? else if(b==0||b==1)

? ? {

? ? ? ? c=1;

? ? }

? ? else

? ? {

? ? ? ? c=a(b-1)*b;

? ? }

}

? ? int main()

? ? {

? ? ? ? int b=5;

? ? ? ? printf("%d\n",a(b));

? ? ? ? return 0;

? ? }

有以下幾個(gè)問題想請(qǐng)教下大家:

  1. 由于粗心,沒有在自定義函數(shù)里面添加return語句,但是發(fā)現(xiàn)這樣也可以得到正確的結(jié)果(從網(wǎng)上了解到在c語言中如果沒有return語句,軟件會(huì)默認(rèn)為return 0)如果默認(rèn)為return 0的話,最后的結(jié)果不就應(yīng)該是0嗎,怎么答案還是正確的?

  2. 如果把b賦值為負(fù)數(shù),由于return 0的關(guān)系程序輸出的結(jié)果會(huì)為(輸入錯(cuò)誤!

    0)怎么把后面的0去除?

正在回答

3 回答

我用VS運(yùn)行了下 結(jié)果是-96? 不太明白其中的道理= =..

0 回復(fù) 有任何疑惑可以回復(fù)我~

我試運(yùn)行了下你的代碼,(雖然現(xiàn)在我對(duì)于堆棧概念還不理解)但我嘗試將c和d的表達(dá)式換了下位置,所得結(jié)果似乎驗(yàn)證了你的猜想,但

#include<stdio.h>

int a(int b)

{

? ? int c=4*b-1;

? ? printf("%d\n",c);

}

int main()

{

? ? int b=2;

? ? printf("%d\n",a(b));

? ? return 0;

}

這段代碼所輸出的結(jié)果為7,2;這個(gè)我就理解不了了。

另:你對(duì)問題鍥而不舍地精神值得學(xué)習(xí)

1 回復(fù) 有任何疑惑可以回復(fù)我~
#1

世末理想鄉(xiāng)

我覺得這個(gè)第一個(gè)數(shù)是函數(shù)a里c的運(yùn)算結(jié)果,第二個(gè)數(shù)是函數(shù)a中printf函數(shù)的返回值。 printf函數(shù)的返回值是輸出的字符個(gè)數(shù)。\n算一個(gè)字符。你把a(bǔ)函數(shù)里的printf函數(shù)中的\n去掉就能發(fā)現(xiàn)第二個(gè)輸出的值變成了1。
2018-03-22 回復(fù) 有任何疑惑可以回復(fù)我~

其實(shí)挺有意思的一個(gè)問題。先回答我能說清楚的。非void型函數(shù)不加return語句絕對(duì)錯(cuò)誤,沒報(bào)錯(cuò)是編譯器比較寬容,大概在一些編譯器那里是錯(cuò)的。
默認(rèn)return 0是哪里說的能給個(gè)鏈接嗎?我覺得return 0是主函數(shù)的默認(rèn)返回值。具體的你再看看。我改成復(fù)述以后是輸入錯(cuò)誤14。你知道指針的概念嗎?如果知道的話,先看看指針和函數(shù)名之間的關(guān)系吧。去掉后面的數(shù)字就把主函數(shù)里的printf換成a(b)就好了。
5ab238b40001b82303600640.jpg

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

慕牧羊6158366 提問者

有意思的是main函數(shù),雖然也沒有return語句,但在返回前有一條指令把eax設(shè)為0了,也就是編譯器自動(dòng)設(shè)置返回0。 https://www.zhihu.com/question/51597277
2018-03-21 回復(fù) 有任何疑惑可以回復(fù)我~
#2

世末理想鄉(xiāng) 回復(fù) 慕牧羊6158366 提問者

你看一下這段代碼的運(yùn)行結(jié)果,感覺那個(gè)人說的不對(duì)或者是我對(duì)eax寄存器的理解不對(duì)。 #include<stdio.h> int a(int b) { int c;//階乘結(jié)果 int d; if(b<0) { printf("輸入錯(cuò)誤!\n"); } else if(b==0||b==1) { c=1; d=0; } else { c=a(b-1)*b; d=a(b-2)*b; } } 主函數(shù)不變。
2018-03-21 回復(fù) 有任何疑惑可以回復(fù)我~
#3

世末理想鄉(xiāng) 回復(fù) 慕牧羊6158366 提問者

你可以看一下堆棧的概念,個(gè)人認(rèn)為是取了堆棧頂最后加入的值作為了函數(shù)的返回值。這個(gè)問題挺好。。。
2018-03-21 回復(fù) 有任何疑惑可以回復(fù)我~
#4

慕牧羊6158366 提問者 回復(fù) 世末理想鄉(xiāng)

我試運(yùn)行了下你的代碼,(雖然現(xiàn)在我對(duì)于堆棧概念還不理解)但我嘗試將c和d的表達(dá)式換了下位置,所得結(jié)果似乎驗(yàn)證了你的猜想,但 #include<stdio.h> int a(int b) { int c=4*b-1; printf("%d\n",c); } int main() { int b=2; printf("%d\n",a(b)); return 0; } 這段代碼所輸出的結(jié)果為7,2;這個(gè)我就理解不了了。 另:你對(duì)問題鍥而不舍地精神值得學(xué)習(xí)
2018-03-22 回復(fù) 有任何疑惑可以回復(fù)我~
查看1條回復(fù)

舉報(bào)

0/150
提交
取消

請(qǐng)麻煩給解釋下

我要回答 關(guān)注問題
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)