Hỏi/ Thắc mắc - Phép gán thì trình biên dịch sẽ chạy từ trái sang phải hay từ phải sang trái | VN-Zoom | Cộng đồng Chia Sẻ Kiến Thức Công Nghệ và Phần Mềm Máy Tính

Adblocker detected! Please consider reading this notice.

We've detected that you are using AdBlock Plus or some other adblocking software which is preventing the page from fully loading.

We need money to operate the site, and almost all of it comes from our online advertising.

If possible, please support us by clicking on the advertisements.

Please add vn-z.vn to your ad blocking whitelist or disable your adblocking software.

×

Hỏi/ Thắc mắc Phép gán thì trình biên dịch sẽ chạy từ trái sang phải hay từ phải sang trái

statistics

Moderator
Thành viên BQT
Em đang thắc mắc là phép gán thì trình biên dịch sẽ chạy từ trái sang phải hay từ phải sang trái. Em thì nghĩ là từ phải sang trái vì đa số bạn bè em bảo thế :v và em cũng hiểu theo cách:
+ Chương trình gặp phép gán sẽ chạy từ phải sang trái, vì chạy như vậy nó mới biết là giá trị bỏ vào biến.

Nhưng cũng có ý kiến nói rằng:
+ Chương trình vẫn sẽ chạy từ trái sang phải, khi gặp phép gán nó sẽ lấy biến phía trước bỏ vào stack, rồi sau đó nó lấy các phép tính và giá trị bên phải bỏ vào stack. Cuối cùng thì nó lấy giá trị và phép toán từ stack ra và gán lại vào biến.

Nếu kết hợp cả hai thì có thể hiểu là: Chương trình sẽ chạy từ trái sang phải, nhưng lúc thực hiện tính toán sẽ chạy từ phải sang trái ( stack ).

Em không biết hiểu như vậy có đúng không? Em học ngôn ngữ C++.
Cám ơn các bác.
@dammage @NgoHungCuong
 

2CongLC

Gà con
Tùy theo ngôn ngữ lập trình người ta qui ước , Vi dụ

C# - giá trị cần gán bên trái
int sample1;
string sample2;

VB - giá trị cần gán bên phải
Dim sample1 as interger
Dim sample2 as string


Ai muốn học lập trình Net thì follow me
 

2CongLC

Gà con
Còn khi chạy lệnh thì sẽ thực hiện từ trên xuống thế cho nên các khai báo cần sắp xếp tuần tự hợp lí
 

shinken

Búa Gỗ Đôi
- Hầu hết các ngôn ngữ lập trình, bên phải phép gán được thực hiện trước rồi gán vào biến bên trái.
- Trên cùng 1 biểu thức thì căn cứ vào độ ưu tiên và từ trái sang phải (nếu cùng độ ưu tiên).
- Một số ngôn ngữ lập trình sẽ thực hiện tất cả phép toán rồi mới sang biểu thức/câu lệnh kế sau (pascal, vb..), nhưng cũng có 1 số ngôn ngữ chỉ thực hiện 1 số phép toán trong câu lệnh (kết quả biểu thức đã có, và những phép toán còn lại trong biểu thức sẽ không thay đổi kết quả) và bỏ qua các phép còn lại đó (không thực thi).
vd: c=(1>0)||i++>1) trong biểu thức này thì i++ sẽ không được thực hiện vì logic (1>0) đã cho kết quả biểu thức rồi.
 

statistics

Moderator
Thành viên BQT
- Hầu hết các ngôn ngữ lập trình, bên phải phép gán được thực hiện trước rồi gán vào biến bên trái.
- Trên cùng 1 biểu thức thì căn cứ vào độ ưu tiên và từ trái sang phải (nếu cùng độ ưu tiên).
- Một số ngôn ngữ lập trình sẽ thực hiện tất cả phép toán rồi mới sang biểu thức/câu lệnh kế sau (pascal, vb..), nhưng cũng có 1 số ngôn ngữ chỉ thực hiện 1 số phép toán trong câu lệnh (kết quả biểu thức đã có, và những phép toán còn lại trong biểu thức sẽ không thay đổi kết quả) và bỏ qua các phép còn lại đó (không thực thi).
vd: c=(1>0)||i++>1) trong biểu thức này thì i++ sẽ không được thực hiện vì logic (1>0) đã cho kết quả biểu thức rồi.
Em cảm ơn bác nhiều nhé.
 


Top