Thảo luận:Bảng tra cứu thuật ngữ ngôn ngữ lập trình C/Xét điều kiện
?[sửa]
Có 3 loại mệnh đề lựa chọn:
- If
- If .. Else
- Switch
The ? (ternary condition) operator is a more efficient form for expressing simple if statements. It has the following form:
expression1 ? expression2: expression3
It simply states:
if expression1 then expression2 else expression3
For example to assign the maximum of a and b to z:
z = (a>b) ? a : b;
which is the same as:
if (a>b)
z = a; else z=b;
If[sửa]
- Công Thức
if (<biểu thức>) <mệnh đề1>
- Thí Dụ
If .. Else[sửa]
- Công Thức
if (<biểu thức>) <mệnh đề1> else <mệnh đề2>
- Thí Dụ
Trong dạng này, nếu phần trong ngoặc đơn có giá trị khác 0 hay có giá trị "đúng" (true) thì dòng điều khiển sẽ chuyển vào để thực thi <mệnh đề1>. Nếu trong câu lệnh if
có thêm từ khóa else
thì <mệnh đề2> sẽ được thực thi một khi <biểu thức> có giá trị 0 hay giá trị "sai".
Nhắc lại: như trên thì vị trí mỗi mệnh đề đều có thể thay bằng một khối mã.
Trong cách viết mã lồng nhau phức tạp bao gồm nhiều mệnh đề if
thì từ khóa else
sẽ được gán vào mệnh đề if
phía trên gần nhất nào chưa được ghép. Để tránh sự nhầm lẫn cách tốt nhất là lồng chúng vào trong các dấu {
và }
.
switch[sửa]
Mệnh đề switch
sẽ gây ra việc chuyển dòng điều khiển sang một trong những mệnh đề con kế tiếp tùy theo giá trị của một biểu thức X (biểu thức này phải có kiểu nguyên). Các mệnh đề con này thường là các mệnh đề phức hợp. Đứng trước mỗi mệnh đề con sẽ là một từ khóa case
, sau đó là một biểu thức hằng Hi, và dấu hai chấm :
gắn liền tiếp theo đó là mệnh đề con Mi.
Khi giá trị của X trùng với một giá trị Hi được nêu ở đâu thì mệnh đề con đi gắn liền vói hằng tại đó (tức là Mi) sẽ được thực thi.
Nếu X không bằng với bất kì giá trị Hi nào thì người lập trình có thể dùng thêm từ khóa default
, sau đó là dấu hai chấm :
và tiếp theo là một mệnh đề con Mdefault. Mệnh đề con này sẽ được thực thi khi mà giá trị của X khác với mọi giá trị hằng Hi.
Lưu ý:
- Trong câu lệnh
switch
thì không cho phép có hai giá trị hằng bằng nhau. Nghĩa là khi X được đánh giá thì chỉ có tối đa một mệnh đề con được thực thi. - Các câu lệnh
switch
có thể được dùng trong dạng lồng vào nhau (nest), một từ khóacase
haydefault
sẽ thuộc vào câu lệnhswitch
bên trong nhất (hay nhỏ nhất) chứa nó. - Một khi dòng điều khiển hoàn tất câu lệnh con Mi thì nó sẽ tiếp tục thi hành các câu lệnh con Mi+1 theo sau cho đến khi nó bị yêu cầu ngưng bởi câu lệnh nhảy (mà thường dược dùng nhiều nhất là câu lệnh
break
)
Trong dạng thí dụ dưới đây, nếu <biểu thức X> có giá trị bằng <hằng H2> thì mệnh đề các biểu thức <mệnh đề M2>,<mệnh đề M3>, và <mệnh đề Mdefault> sẽ lần lần lượt được thực thi theo thứ tự nếu như trong chúng không có câu lệnh break
. Nhưng vì trong mã thí dụ có câu lệnh break
nên dòng điều khiển sẽ ngưng và kết thúc câu lệnh switch
khi thi hành lệnh break
này.
switch (<biểu thức X>) { case <hằng H1> :
<mệnh đề M1>
case <hằng H2> :
<mệnh đề M2>
break;
case <hằng H3> :
<mệnh đề M3>
default :
<mệnh đề Mdefault>
}