30/09/2018, 19:02

Toán tử ++ trong C++

Ai giải thích kết quả của đoạn code C++ sau giùm mình được không

    int x = 2, y = 2, z = 2, t = 2;
    cout << (t++ + t++) << endl;
    cout << (x++ + ++x) << endl;
    cout << (++y + y++) << endl;
    cout << (++z + ++z) << endl;
nohat viết 21:10 ngày 30/09/2018

nắm vững thứ tự ưu tiên của các toán tử trong c++ là ok

anon51853234 viết 21:04 ngày 30/09/2018

em có xem 1 videos 1 người dạy C/C++ nói là không nên sử dụng cái này vì Microsoft khuyến cáo là trong 1 số bài toán mỗi máy ra 1 đáp án khác nhau

*grab popcorn* viết 21:04 ngày 30/09/2018

Undefinded Behavior
Mỗi compiler tuy cách biên dịch sẽ cho ra kq khác nhau.

LazyCat viết 21:09 ngày 30/09/2018

Thank you a lots

Cái này là do cách đọc chuỗi từ trái qua phải hay là từ phải qua trái của mỗi trình biên dịch thôi.

int x = 2, y = 2, z = 2, t = 2;
cout << (t++ + t++) << endl;
cout << (x++ + ++x) << endl;
cout << (++y + y++) << endl;
cout << (++z + ++z) << endl;

Tương đương

int x = 2, y = 2, z = 2, t = 2;
cout << (t + t) << endl; // Print 4
t += 1; // t == 3
t += 1; // t == 4
x += 1; // x == 3
cout << (x++ + ++x) << endl; // Print 5
x += 1; // x == 4
y += 1; // y == 3
cout << (++y + y++) << endl; // Print 5
y += 1; // y == 4
z += 1; // z == 3
z += 1; // z == 4
cout << (++z + ++z) << endl; // Print 6
nohat viết 21:10 ngày 30/09/2018

những cách viết như thế này là nên tránh anh nhỉ

Bài liên quan
0