[英]Trouble with cin function in C++ language
我寫了一個小測試代碼:
#include <iostream>
using namespace std;
int main() {
int a,b,c,d;
cin>>a>>b,c>>d;
cout<<a<<" "<<b<<" "<<c<<" "<<d;
return 0;
}
我給了輸入:
1 2 3 4
輸出是:
1 2 0 0
但是從我的觀點來看,它應該給出一些錯誤,因為cin>>a>>b,c
為什么這段代碼沒有給出錯誤?
逗號是一個運算符,整數之間的>>是移位運算符(cin使用此運算符的重載版本)。 所以你的代碼相當於:
cin>>a>>b;
c>>d;
兩行都有效,你只是忽略第二次操作的結果
根據逗號運算符 :
在逗號表達式
E1, E2
,評估表達式E1,丟棄其結果,並且在表達式E2的評估開始之前完成其副作用(注意用戶定義的運算符,不能保證排序)。
所以你的代碼cin>>a>>b,c>>d;
相當於:
cin>>a>>b;
c>>d; // built-in bitwise shift operator. Note c and d isn't initialized yet.
形式良好。
cin>>a>>b,c>>d;
應該:
cin>>a>>b>>c>>d;
它沒有給出任何錯誤,因為編譯器將你的表達式視為:
cin>>a>>b;
c>>d; // bit-wise shift operator
逗號是一個有效的運算符,它將一個接一個地執行的表達式分開,並將最左邊的結果作為值返回。
所以:
a = b, c = d;
相當於:
a = b;
c = d;
因此,在您的情況下,您正在做兩個獨立但有效的事情:
cin >> a >> b, c >> d;
相當於:
cin >> a >> b;
c >> d;
c >> d
是整數之間的有效二進制移位操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.