int k = 0;
while (k = 1)
k++;
k = 1 是 賦值運算式,將 1 存入 k,運算式值為 1(非零)。while 判斷條件為非零 → 永真。k++ 執行後 k 變 2,下一次判斷 k = 1 又將 k 重設為 1,條件永遠為真。while (k == 1) // 雙等號比較
k++;
while (1 == k),誤寫單等號編譯報錯。-Wparentheses,MSVC /W4 會提示「assignment used as truth value」。C++17 引入初始化語句,將賦值與比較分離,從語法層面杜絕此類錯誤。