2021年3月30日 星期二

邏輯錯誤

 1.編譯時期的錯誤(Complie Errors)


編譯時期的錯誤來自程式建造編譯時期,例如if 打成IF,或程式語法使用錯誤

(比如該有括號沒打括號,忘了加上「;」…)

凡是造成Visual C#編譯時的困擾、讓它看不懂,通通算是編譯時期的錯誤。

「編譯時期」的錯誤可以透過「編譯器(Compiler)」在編譯的時候就幫你發現問題,

找錯誤容易很多,而在「執行時期」的錯誤就比較難追蹤了,

通常要有開發工具、還要下中斷點、... 

最好指定所有變數的資料型別稱為「強型別」。使用強型別有以下幾點好處:

  • 讓 IntelliSense® 能夠支援變數。這能讓您在輸入程式碼時看到變數的屬性及其他成員。
  • 可以利用編譯器型別檢查,這能找出可能因錯誤 (例如溢位) 而在 Run Time 失敗的陳述式。
  • 這也能夠偵測在不支援變數的物件上所進行的方法呼叫。
  • 執行程式碼的速度較快。

 

2.執行時期的錯誤(Run-time errors)

通常是試著執行一個不能執行的操作,例如整數除法中除數為0,或打開一個不存在的文件

在編譯過程中無法發現,只有在Run的時候才能發現,通常會使用Try Catch

 

3.邏輯錯誤(Logic Errors)

通常程式可以通過編譯並正常運行,但運行時並未按預期方式運行或得到預期結果。

註:此資料來自https://sweetkikibaby.pixnet.net/blog/post/190748169

2021年1月5日 星期二

bitwise練習

 #include <stdio.h>


int main(void) {

    printf("AND運算:\n");

    printf("0x26 AND 0xe2\t\%x\n", 0x26 & 0xe2);



    printf("OR運算:\n");

    printf("0x26 OR 0xe2\t\%x\n", 0x26 | 0xe2);


    printf("XOR運算:\n");

    printf("0x26 XOR 0xe2\t\%x\n", 0x26 ^ 0xe2);


    printf("NOT運算:\n");

    printf("NOT 0x26\t\%x\n", ~0x26);

   

    printf("<<運算:\n");

    printf("<< 0x26\t\%x\n", 0x26<<2); 


    printf(">>運算:\n");

    printf(">> 0x26\t\%x\n", 0x26>>1); 

    return 0;

}

algorithm

 #include <iostream> #include <string.h> using namespace std; int main(int argc, char** argv)  { for(int j=2;j<=100;j++)//j...