程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 關於if語句引出的問題(C++ VS javascript)

關於if語句引出的問題(C++ VS javascript)

編輯:C++入門知識

  最近轉為學習c++,進行了一些c++的項目開發,熟悉了js語言特性的我,一時間編程遇到很大困難,其中很困惑的就是條件判斷的問題,這裡以c++、js進行比較說明。首先看幾個測試。     測試一、c++源碼: [cpp]   int test(){       printf("test\n");       return 1;   }   int main()   {       int i=0;       if(i&test())           printf("ok1");       else           printf("ok2");   }   運行結果: [cpp] view plaincopy test   ok2       測試二、js源碼: [javascript]   function test(){     console.log("test");     return 1;   }   var i=0;   if(i&&test())     console.log("ok1");    else    console.log("ok2");   運行結果: [javascript]   ok2        從原理上說,雖然i=0對於if條件來說,不管test函數返回的結果如何,與運算後都為0(假),結果應該是"ok2”,而兩種語言在這上面的運行機制完全不一樣,顯然c++做了很多無用功。下面再看看或運算如何。 測試三、c++源碼: [cpp]   int test(){       printf("test\n");       return 0;   }   int main()   {       int i=1;       if(i||test())           printf("ok1");       else           printf("ok2");   }   運行結果: [cpp]  ok1   測試四、js源碼: [javascript]   function test(){     console.log("test");     return 0;   }   var i=1;   if(i||test())     console.log("ok1");    else    console.log("ok2");   運行結果: [javascript]   ok1       在或運算上,c++和js語言判斷機制相同,當第一個條件為真時,不再判斷並列條件test函數的結果。     個人是比較困惑,於是再對c#進行測試。      測試五、c#源碼: [csharp]  using System;   using System.Collections.Generic;   using System.ComponentModel;   using System.Data;   using System.Drawing;   using System.Linq;   using System.Text;   using System.Windows.Forms;      namespace WindowsFormsApplication1   {       public partial class Form1 : Form       {           public Form1()           {               InitializeComponent();           }           string con = "";           bool test()           {               con += "test";               return true;           }           private void button1_Click(object sender, EventArgs e)           {               con = "";               bool i = false;               if (i&&test())                   con += "ok1";               else                   con += "ok2";               MessageBox.Show(con);           }       }   }   運行結果:     說明c#與js機制相同。     至於為什麼要這樣比較,是因為假如有兩個條件A、B,A和B都成立時做一件事,其中A不成立B就一定不成立,那麼用js,語句就可以這樣寫: [javascript]   if(A&&B){      }else{      }       當A不成立時,自然不再判斷B,這樣運行效率沒有影響,但如果用c++來寫,兩個條件都會判斷,效率就有影響了,所以得這樣寫: [cpp]   if(A){       if(B){             }   }else{      }       這裡記下開發中遇到的困惑,至於這兩種語言的深層次問題筆者也說不清楚,做個總結先。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved