Thứ Bảy, 16 tháng 5, 2015

Task 4

1. biểu thức là gì?
Một biểu thức là tổ hợp các toán tử và toán hạng. Toán tử thực hiện các thao tác như cộng,
trừ, so sánh v.v… Toán hạng là những biến hay những giá trị mà các phép toán được thực hiện
trên nó. Trong ví dụ a + b, “a” và “b” là toán hạng và “+” là toán tử. Tất cả kết hợp lại là một
biểu thức.
ví dụ về biểu thức :
2
x
3 + 7
2 × y + 5
2 + 6 × (4 – 2)
z + 3 × (8 – z)
2. toán tử gán là gì?
Trước khi nghiên cứu các toán tử khác, ta hãy xét toán tử gán (=). Ðây là toán tử thông dụng nhất cho mọi ngôn ngữ và mọi người đều biết. Trong C, toán tử gán có thể được dùng cho bất kỳ biểu thức C hợp lệ. Dạng thức chung cho toán tử gán là:
Tên biến = biểu thức;
3. thế nào là gán liên tiếp?
Nhiều biến có thể được gán cùng một giá trị trong một câu lệnh đơn. Việc này thực hiện qua cú pháp gán liên tiếp. Ví dụ:
a = b = c =10;
Dòng mã trên gán giá trị 10 cho a, b,và c. Tuy nhiên, việc này không thể thực hiện lúc khai báo biến.
Ví dụ,
int a = int b = int c= 0;
Câu lệnh trên phát sinh lỗi vì sai cú pháp.
4.biểu thức số học là gì?
Các phép toán thường được thực hiện theo một thứ tự cụ thể (hoặc riêng biệt) để cho ra giá trị cuối cùng. Thứ tự này gọi là độ ưu tiên (sẽ nói đến sau).
Các biểu thức toán học trong C được biểu diễn bằng cách sử dụng toán tử số học cùng với các toán
hạng dạng số và ký tự. Những biểu thức này gọi là biểu thức số học (Arithmetic Expressions). Ví dụ về biểu thức số học là :
a * (b+c/d)/22;
++i % 7;
5 + (c = 3+8);
Như chúng ta thấy ở trên, toán hạng có thể là hằng, biến hay kết hợp cả hai. Hơn nữa, một biểu thức có thể là sự kết hợp của nhiều biểu thức con. Chẳng hạn, trong biểu thức đầu, c/d là một biểu thức con, và trong biểu thức thứ ba c = 3+8 cũng là một biểu thức con.
5. Biểu thức dạng hỗn hợp & Chuyển đổi kiểu là gì?
Một biểu thức dạng hỗn hợp là một biểu thức mà trong đó các toán hạng của một toán tử thuộc về nhiều
kiểu dữ liệu khác nhau. Những toán hạng này thông thường được chuyển về cùng kiểu với toán hạng có
kiểu dữ liệu lớn nhất. Điều này được gọi là tăng cấp kiểu. Sự phát triển về kiểu dữ liệu theo thứ tự sau :
char < int <long <float <double
Chuyển đổi kiểu tự động được trình bày dưới đây nhằm xác định giá trị của biểu thức:
a. char và short được chuyển thành int và float được chuyển thành double.
b. Nếu có một toán hạng là double, toán hạng còn lại sẽ được chuyển thành double, và kết quả là
double.
c. Nếu có một toán hạng là long, toán hạng còn lại sẽ được chuyển thành long, và kết quả là long.
d. Nếu có một toán hạng là unsigned, toán hạng còn lại sẽ được chuyển thành unsigned và kết quả cũng là unsigned.
e. Nếu tất cả toán hạng kiểu int, kết quả là int.
Ngoài ra nếu một toán hạng là long và toán hạng khác là unsigned và giá trị của kiểu unsigned không thể biểu diễn bằng kiểu long. Do vậy, cả hai toán hạng được chuyển thành unsigned long.
Sau khi áp dụng những quy tắc trên, mỗi cặp toán hạng có cùng kiểu và kết quả của mỗi phép tính sẽ cùng kiểu với hai toán hạng.
6.thế nào là Ép kiểu (Casts)
Thông thường, ta nên đổi tất cả hằng số nguyên sang kiểu float nếu biểu thức bao gồm những phép
tính số học dựa trên số thực, nếu không thì vài biểu thức có thể mất đi giá trị thật của nó.Ta xem ví dụ:
int x,y,z;
x = 10;
y = 100;
z = x/y;
Trong trường hợp này, z sẽ được gán 0 khi phép chia diễn ra và phần thập phân (0.10) sẽ bị cắt bỏ.Do đó một biểu thức có thể được ép thành một kiểu nhất định. Cú pháp chung của cast là: (kiểu dữ liệu) biểu thức
Ví dụ, để đảm bảo rằng biểu thức a/b, với a và b là số nguyên, cho kết quả là kiểu float, dòng mã sau được viết:
(float) a/b;
Ép kiểu có thể áp dụng cho các giá trị hằng, biểu thức hay biến, ví dụ:
(int) 17.487;
(double) (5 * 4 / 8);
(float) (a + 7);
Trong ví dụ thứ hai, toán tử ép kiểu không đạt mục đích của nó bởi vì nó chỉ thực thi sau khi toàn biểu thức trong dấu ngoặc đã được tính. Biểu thức 5 * 4 / 8 cho ra giá trị là 2 (vì nó có kiểu là số nguyên nên đã cắt đi phần thập phân), vì vậy, giá trị kết quả với kiểu double cũng là 2.0.
Ví dụ:
int i = 1, j = 3;
x = i / j; /* x = 0.0 */
x = (float) i/(float) j; /* x = 0.33 */
7.thế nào là thứ tự ưu tiên của các biểu thức con?
Những biểu thức phức tạp có thể chứa những biểu thức nhỏ hơn gọi là biểu thức con. C không xác
định thứ tự mà các biểu thức con được lượng giá. Một biểu thức sau:
a * b /c + d *c;
bảo đảm rằng biểu thức con a * b/c và d*c sẽ được tính trước phép cộng. Hơn nữa, quy tắc từ trái sang phải cho phép toán nhân và chia bảo đảm rằng a sẽ được nhân với b và sau đó sẽ chia cho c. Nhưng không có quy tắc xác định hoặc a*b /c được tính trước hay sau d*c. Tùy chọn này là ở người thiết kế trình biên dịch quyết định. Quy tắc trái sang phải hay ngược lại chỉ áp dụng cho một chuỗi toán tử cùng độ ưu tiên. Cụ thể, nó áp dụng cho phép nhân và chia trong a*b/c. Nhưng nó không áp dụng cho
toán tử + vì đã khác cấp.Bởi vì không thể xác định thứ tự tính toán các biểu thức con, do vậy, ta không nên dùng các biểu thức nếu giá trị biểu thức phụ thuộc vào thứ tự tính toán các biểu thức con . Xét ví dụ sau:
a * b + c * b++ ;
Có thể trình biên dịch này tính giá trị mục bên trái trước và dùng cùng giá trị b cho cả hai biểu thức con. Nhưng trình biên dịch khác lại tính giá trị mục bên phải và tăng giá trị b trước khi tính giá trị mục bên trái.
8. thế nào là thứ tự ưu tiên giữa những toán tử so sánh (toán tử quan hệ)???
Ta đã thấy trong phần trước một số toán tử số học có độ ưu tiên cao hơn các toán tử số học khác.
Riêng với toán tử so sánh, không có thứ tự ưu tiên giữa các toán tử và chúng được ước lượng từ trái sang phải.
9. thế nào là thứ tự ưu tiên giữa những toán tử luận lý???
thứ tự :1 2 3
toán tử:1(NOT), 2(AND), 3(OR)
Ðiều kiện này được tính như sau:
1. False OR True AND [NOT False] AND True
NOT có độ ưu tiên cao nhất.
2. False OR True AND [True AND True]
Ở đây, AND là toán tử có độ ưu tiên cao nhất và những toán tử có cùng ưu tiên được tính từ phải
sang trái.
3. False OR [True AND True]
4. [False OR True]
5. True
10. khi nào dùng dấu ngoặc đơn???
Thứ tự ưu tiên của các toán tử có thể thay đổi bởi các dấu ngoặc đơn. Khi đó, chương trình sẽ tính toán các phần dữ liệu trong dấu ngoặc đơn trước.
 *Khi một cặp dấu ngoặc đơn này được bao trong cặp khác, việc tính toán thực hiện trước tiên tại
cặp dấu ngoặc đơn trong cùng nhất, rồi đến dấu ngoặc đơn bên ngoài.
*Nếu có nhiều bộ dấu ngoặc đơn thì việc thực hiện sẽ theo thứ tự từ trái sang phải.

Không có nhận xét nào:

Đăng nhận xét