国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C語言陷阱之優先級學習小結

2019-11-08 18:23:06
字體:
來源:轉載
供稿:網友

很多時候跟別人交流介紹自己工作的時候,經常聽到別人說自己精通C語言。其實,我自己有時候自我介紹的時候也會這么說,不過隨著自己工作的過程中各種書籍、文檔等一些列的資料看下來,越覺得自己膚淺。其實,很多最基礎的東西我還沒有掌握。

今天看C語言陷阱的時候看到一個簡單的小陷阱,如果是我自己寫代碼的話很可能就陷進去了,幸運的是這么多年來我的代碼中確實是沒有用到過這個操作。

測試代碼如下:

  1 #include "stdio.h"

  2 

  3 int flag1 =1;

  4 int flag2 =2;

  5 

  6 int main()

  7 {

  8     if(flag1 & flag2)

  9     {

 10         PRintf("bit equal!/n");

 11     }

 12     else

 13     {

 14         printf("bit not equal!/n");

 15     }

 16 

 17     return0;

 18 }

 19 

編譯運行如下:

GreydeMac-mini:exp01 greyzhang$ gcc exp01.c 

GreydeMac-mini:exp01 greyzhang$ ./a.out 

bit not equal!

為了可讀性,修改代碼如下:

  1 #include "stdio.h"

  2 

  3 int flag1 =1;

  4 int flag2 =2;

  5 

  6 int main()

  7 {

  8     if(flag1 & flag2 ==1)

  9     {

 10         printf("bit equal!/n");

 11     }

 12     else

 13     {

 14         printf("bit not equal!/n");

 15     }

 16 

 17     return0;

 18 }

編譯運行如下:

GreydeMac-mini:exp01 greyzhang$ gcc exp01.c 

exp01.c:8:11: warning:& has lower precedence than ==; == will be evaluated

      first [-Wparentheses]

        if(flag1 & flag2 == 1)

                 ^~~~~~~~~~~~

exp01.c:8:11: note: place parentheses around the '==' expression to silence this

      warning

        if(flag1 & flag2 == 1)

                 ^

                   (         )

exp01.c:8:11: note: place parentheses around the & expression to evaluate it

      first

        if(flag1 & flag2 == 1)

                 ^

           (            )

1 warning generated.

GreydeMac-mini:exp01 greyzhang$ ./a.out 

bit not equal!

啊,這個結果有些出乎意料。不過,我們前面提到的陷阱問題倒是被編譯器發掘出來了,我用的編譯器是Mac自帶的兼容gcc的編譯器。不知道gcc的編譯器中是否也會有相應的處理?當然,再怎么說這畢竟是編譯器的處理,不同的編譯器對此或許會有不同的處理方式。Anyway,這個陷阱還是確確實實存在的。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 耿马| 依安县| 合水县| 长白| 临邑县| 缙云县| 黄山市| 龙门县| 黄骅市| 遵义市| 利津县| 汨罗市| 富阳市| 临城县| 岗巴县| 汝州市| 镶黄旗| 东乡族自治县| 绥棱县| 罗平县| 和龙市| 盈江县| 长岛县| 聊城市| 江油市| 上蔡县| 高青县| 闸北区| 乐安县| 双峰县| 如皋市| 丰台区| 青州市| 格尔木市| 措美县| 西乌| 大洼县| 漳平市| 大洼县| 榆林市| 龙井市|