1樓:決勝千
首先,應該說明的是在不同的編譯環境中結果是不一樣的。
在vc++6.0中的規則: printf函式的執行順序是由右到左的舉個例子1:
int a=65,b=20;
printf("%d,%d\n",b=a+1,a=a+1);
輸出結果是:67,66
而不是:66,66
例子2:
int a=65,b=20;
printf ("%d,%d",b=a+1,b+1,a=a+1);
輸出結果是:67,21
第一個%d與b=a+1替換 第二個%d與剩下的替換 順序右到左先算a=a+1=66 替換 第二個 %d再算b+1 =21 替換 第二個 %d再算b=a+1=67 替換 第一個 %d例子3:
int a=65,b=20;
printf ("%d,%d",(b=a+1,b+1),b-5,a=a+1);
輸出結果是:67,61
第一個%d與 括號裡的 替換, 第二個%d與剩下的替換括號優先順序最高,先算括號裡的,括號裡內容相當於逗號表示式,順序從左到右。
餘下的順序從右到左
先算b=a+1=66 替換 第一個 %d
再算b+1 =67 替換 第一個 %d
再算a=a+1=66 替換 第二個 %d
再算b-5 =61 替換 第二個 %d
這題的答案是20,142 過程與 例子3 相似夠詳細了吧!
2樓:匿名使用者
輸出結果是66142,第二個是142
你算的142是對的,答案141錯了。a=a+1,a='b',答案還是按'a'計算了。
3樓:
輸出的結果是66 141
a = a+1//a = 65 +1
a + 'a' - 'a' 可以換成a- 'a 『+ 'a' = 』a'-'a'+'a'
最後輸出的是a的值97換成8進位制是141
4樓:
1 輸出結果是:
66142
2 分析:
a=a+1
=65+1
=66a+'a'-'a'
=66+97-65
=98=(142)8 --->表示142是八進位制
5樓:匿名使用者
這個涉及到函式引數的從右到左還是從左到右的問題,其實計算的過程大家都知道
原因是,如果一個函式有多個引數,比如
int fun (int a, int b, int c);
呼叫時,總是從最後一個引數開始壓棧。 也就是c先進棧,其次是b,最後才是a。
同理, 如果你這樣寫:
int main ()
先計算最後一個引數(即最右一個++i),壓入1,以此類推,再壓入2,3和字串"%d,%d,%d"的首地址。
程式的輸出是 3,2,1
此例同理
6樓:匿名使用者
'a'-'a'=0
0+'a'=97
八進位制是141
在c語言中,設有char a='c' ,b='a' ;執行語句printf("%d,
7樓:聽不清啊
設有char a='c' ,b='a' ;執行語句printf("%d,%d",b,a-b);後,輸出結果是
a、65,2
因為在c中,char 等同於一個8位有符號整數,只是內作「字元」解讀。容所以,char a='c' ,b='a' ;等同於char a=67 ,b=65; 在以%d格式輸出時的值就是 65,2
8樓:匿名使用者
選擇a,這個就是把對應的字母轉換成ascii碼值進行運算
c語言 main() { char a='1',b='2'; printf("%c",b++);printf("%d\n",b-a)} 結果是什麼?說明一下。
9樓:右傾的墮落主義
答案是:22
分析:char a='1'b='2'; //賦值,注意a b的型別為char
printf("%c",b++); //以字元型列印列印b後b才自加,所以是現打
//印出「2」後
//b的ascii碼值是50,自加後是51printf("%d\n",b-a) //這句是b的ascii碼值減去a的ascii碼值後
//以整型輸出,即51-49=2,所以輸出「2」
10樓:匿名使用者
輸出結果 22
main()
11樓:匿名使用者
22 第一個2是字元第二個2是數字
printf("%c",b++);先輸出b,再b++,b變成'3'了
printf("%d\n",b-a);b-a也就是'3'-'1'=2
在c語言中如何實現函式,在c語言中如何實現函式模板
go陌小潔 各種用 c 語言實現的模板可能在使用形式上有所不同。現以一個求和函式 sum 為例,用 c template 可寫如下 template r sum const t array,int n 如果不是內建型別,該模板隱式地需要 有r r operator t 運算子可用。1.使用函式指標作...
c語言voidmain在很多c語言中main前沒有為什
天河流紋石 c99規範要求main函式返回值必須是 int。但有些編譯器允許非標準的寫法,而且有一大批程式設計師不這樣寫。在應用角度來看,問題不大。但在原始碼規範上看,建議最好寫上。這就好比生活中,人們的口語總是有語病的。比如 你走先。這麼說,別人能聽懂 但要規範的話,還是要遵循語法。說成 你先走。...
在c語言中,在c語言中s 0 0是什麼意思?
天雲小店 首先糾正一下,應該是s 0 0 少了單引號 s 0 0 表示將字元s 0 的ascii碼與字元0的ascii碼相減,如果s 0 是字元0 9,則表示將該字元變為對應的數字 int型 比如 char s 3 123 printf d n s 0 0 輸出1,將字元1變為數字1 int型 在c...