亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

什么是教育工具能夠證明人們在C / C ++中所做的不必要的假設?

什么是教育工具能夠證明人們在C / C ++中所做的不必要的假設?

C++ C
明月笑刀無情 2019-11-05 10:26:33
我想為SO準備一些教育工具,該工具應幫助初學者(和中級)程序員認識和挑戰C,C ++及其平臺中的不必要假設。例子:“整數環繞”“每個人都有ASCII”“我可以將函數指針存儲在void *中”我認為一個小的測試程序可以在各種平臺上運行,這些平臺運行“合理”的假設,這些假設是根據我們在SO中的經驗得出的,通常是由許多沒有經驗/半經驗的主流開發人員做出的,并記錄了它們在不同機器上的破壞方式。這樣做的目的不是為了證明做某事是“安全的”(這是不可能做到的,如果測試失敗則只能證明任何事情),而是向即使是最無知的人也演示最不起眼的表情如果其他計算機具有未定義或實現定義的行為,則在另一臺計算機上中斷。。為此,我想問你:如何改善這個想法?哪些測試會很好,并且看起來會如何?您是否可以在可以使用的平臺上運行測試并發布結果,以便最終獲得平臺數據庫,它們之間的差異以及為何允許這種差異?我從一開始就制作了這個社區Wiki,因為我認為人們在閱讀本文時想編輯我的笨拙。更新感謝您的輸入。我從您的答案中添加了一些案例,將看看是否可以像Greg建議的那樣為此設置一個github。更新:我為此創建了一個github存儲庫,文件為“ gotcha.c”:http://github.com/lutherblissett/disenchanter請在此處回答補丁或新想法,以便在此處進行討論或澄清。然后,我將它們合并到gotcha.c中。
查看完整描述

3 回答

?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

子表達式的評估順序,包括


函數調用的參數和

運營商(例如,操作數+,-,=,*,/),以下除外:

二進制邏輯運算符(&&和||),

三元條件運算符(?:),以及

逗號運算符(,)

是未指定


例如


  int Hello()

  {

       return printf("Hello"); /* printf() returns the number of 

                                  characters successfully printed by it

                               */

  }


  int World()

  {

       return printf("World !");

  }


  int main()

  {


      int a = Hello() + World(); //might print Hello World! or World! Hello

      /**             ^

                      | 

                Functions can be called in either order

      **/

      return 0;

  } 


查看完整回答
反對 回復 2019-11-05
  • 3 回答
  • 0 關注
  • 633 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號