天天看點

【No.5 類型轉換導緻的錯誤】

==【注意】== 程式語言隻是我們與計算機交流并讓計算機實作我們創造性思想的工具,可以并鼓勵深入掌握一門語言,但千萬别沉迷于鑽某種語言的牛角尖,一定要把握好二者間的度

本帖屬不定時連載貼,以試卷的形式提出一個比較基礎的問題供大家思考讨論,問題的解析将在下一更新貼中一并給出,這樣做是希望還不清楚問題的朋友有自己思考和讨論的時間,希望大家能從這些文章中有所收獲。

貼中問題屬我在學習C\C++過程中遇到的一些文法或者比較隐晦的程式問題,其中有自己的總結,也不乏網絡上搜尋到的經典解析,在此分享給大家,希望能起到抛磚引玉的作用

【No.5  類型轉換導緻的錯誤】

由于連載形式,每帖第二部分都配有上一問題的解答。為了保持文章的針對性和一緻性,

[問題No.5]

請寫出以下代碼的執行結果

複制内容到剪貼闆

<code>#include&lt;iostream&gt; char GetChar(int x, int y) {   char c;   unsigned int a = x;   (a + y &gt; 10) ? (c=1) : (c=2);   return c; } int main(int argc, char **argv) {   using namespace std;   char c1 = GetChar(7,4);   char c2 = GetChar(7,3);   char c3 = GetChar(7,-7);   char c4 = GetChar(7,-8);      printf("c1 = %d\n",c1);   printf("c2 = %d\n",c2);   printf("c3 = %d\n",c3);   printf("c4 = %d\n",c4);   return EXIT_SUCCESS; }</code>

輸出為

1

2

淺析見代碼注釋:

<code>#include&lt;iostream&gt; using namespace std; int val = 0;  //全局變量val void PrintVal(void) {   cout&lt;&lt;val&lt;&lt;endl;  //此處由于名字查找,确定val為全局變量 } int main(int argc, char **argv) {   int val = 0;  //局部于函數main的局部變量val   val = 1;  //局部于函數main的局部變量val被指派為1   PrintVal();  //調用PrintVal函數,輸出全局變量val的值   cout&lt;&lt;val&lt;&lt;endl;  //由于名字查找,此處确定val為局部于函數main的局部變量val   ::val = 2;  //由于作用域操作符,指定此時的val為全局變量val   PrintVal();  //同上,輸出全局變量v al   return EXIT_SUCCESS; }</code>

<code></code><code>     本文轉自Bill_Hoo 51CTO部落格,原文連結:http://blog.51cto.com/billhoo/733260,如需轉載請自行聯系原作者</code>

<code></code><code></code>

<code></code>

繼續閱讀