vì làm j có lệnh j đâu mà chả lỗi, số 1 là bác tính, còn số 2 là máy tính thì lỗi còn j nữa
Câu đố đầu tiên:
Tôi có 2 biểu thức:
"abc" + 9 * 3
"abc" + 4 – 1
ở biểu thức thứ 1, máy tính ra được kết quả là chuỗi "abc27" nhưng ở biểu thức thứ 2 thì máy tính báo lỗi, tại sao vậy?
Đã được chỉnh sửa lần cuối bởi huynguyen : 30-09-2007 lúc 08:52 AM.
vì làm j có lệnh j đâu mà chả lỗi, số 1 là bác tính, còn số 2 là máy tính thì lỗi còn j nữa
Rongcon.com.vn
Bạn chưa hiểu ý đề bài.vì làm j có lệnh j đâu mà chả lỗi, số 1 là bác tính, còn số 2 là máy tính thì lỗi còn j nữa
Bạn thử đưa biếu thức trên gán vào biến rồi xuất ra thì biết.
Ví dụ nhé:
string a;
a = "abc" + 9 * 3; // lúc này a có giá trị là "abc27"
a = "abc" + 4 – 1; // lúc này máy tính báo lỗi.
còn cái kia thì theo tuần tự từ trái sang phải, nó + 4 vào chuỗi rồi thì làm j còn số nào đâu mà - 1, cái trên đúng là do nó thực hiện phép tính nhân trước rồi mới làm phép cộng,kô biết có đúng kô nhỉ
Rongcon.com.vn
OoShinHaoO
sai rồi bạn ơi, phép + và - thì nó đồng hạng kô phân biệt nhưng máy nó sẽ tính từ trái qua phải nên nó sẽ + thêm 4 vào chuỗi do vậy sẽ kô còn số nào để trừ với 1 cả, nếu muốn phép tính này có kết quả phải cho thêm ngoặc vào nữa như thía ni (kô hỉu có j sai kô nhỉ)
a= "abc"+(4-1);
Rongcon.com.vn
Theo pete,
phép tính thứ nhất : ta có ưu tiên toán tử (precedence) * cao hơn phép + nên 9 * 3 thực hiện trước sau đó thực hiện cộng : lúc này 27 bị explicit-conversion nên chuyển thành string lúc này là phép toán nối chuỗi.
phép tính thứ hai : ưu tiên toán tử + - thì theo thứ tự ( associativity) , phép + thực hiện trước lúc này số 4 bị explicit-conversion thành chuỗi nên là phép toán nối chuối sau đó phép trừ : lúc này xảy ra exception : phép trừ chuỗi và một số nguyên : phép toán này không tồn tại và không thực hiện được. Lõi bị bắt.
Đó là nguyên nhân. ^^
None!
Rongcon và pete đều trả lời chính xác ^^, 2 cao thủ có khác.
Đang suy nghĩ thêm các câu hỏi, bà con chờ nhé.
P/S: Các cao thủ vào đây nhiều quá thì tiệm của anh mới mở 1 2 ngày chắc sập mất.
Mục này đúng là hay thật, anh huynguyen tiếp tục nhé. Càng lúc em càng thấy khoái C, hết năm nay em vĩnh biệt Pascal luôn.
Cho 2 đoạn code sau:
Code:if (<test>) { <statement(s)>; } else if (<test>) { <statement(s)>; } else { <statement(s)>; }Nhìn vào thì ai cũng thấy đoạn code thứ 2 khác đoạn code thứ 1 bởi 1 chữ if sau chữ else cuối cùng. Điều đó thì quá đơn giản nhưng hãy suy nghĩ về mặt ngữ nghĩa thì giữa 2 đoạn code có khác nhau ko?Code:if (<test>) { <statement(s)>; } else if (<test>) { <statement(s)>; } else if (<test>) { <statement(s)>; }