24/05/2018, 16:44

Biểu thức

số hcọ đó là sự kết hợp giữa các toán hạng với các toán tử số học và cho ta kết quả là một số(số thực hoặc số nguyên) Ví dụ: (3+5)*6/4-2.4 logic đó là sự kết hợp giữa các toán hạng với các toán tử(toán tử ...

số hcọ đó là sự kết hợp giữa các toán hạng với các toán tử số học và cho ta kết quả là một số(số thực hoặc số nguyên)

Ví dụ: (3+5)*6/4-2.4

logic đó là sự kết hợp giữa các toán hạng với các toán tử(toán tử số học, toán tử quan hệ, toán tử logic) và kết quả cho ta là một giá trị logic. logic ược dùng làm điều kiện trong các cấu trúc điều khiển(if, while,....) và một số trường hợp khác

Ví dụ: (1>=2)&&(5==4+2)

Hầu hết các toán tử đòi hỏi có một toán hạng như toán tử (++, --) hay hai toán hạng như (+,-,*,/,...). Tuy nhiên, C# còn cung cấp thêm một toán tử có ba toán hạng (?:). Toán tử này có cú pháp sử dụng như sau:

< điều kiện > ? < thứ 1> : < thứ 2>

Toán tử này sẽ xác định giá trị của một biểu thức điều kiện, và biểu thức điều kiện này phải trả về một giá trị kiểu bool. Khi điều kiện đúng thì <biểu thức thứ 1> sẽ được thực hiện, còn ngược lại điều kiện sai thì <biểu thức thứ 2> sẽ được thực hiện. Có thể diễn giải theo ngôn ngữ tự nhiên thì toán tử này có ý nghĩa : “Nếu điều kiện đúng thì làm công việc thứ nhất, còn ngược lại điều kiện sai thì làm công việc thứ hai”. Cách sử dụng toán tử ba ngôi này được

minh họa trong ví dụ sau.

Ví dụ : Sử dụng toán tử bao ngôi.

-----------------------------------------------------------------------------

using System;

class Tester

{

public static void Main()

{

int value1;

int value2;

int maxValue;

value1 = 10;

value2 = 20;

maxValue = value1 > value2 ? value1 : value2;

Console.WriteLine(“Gia tri thu nhat {0}, gia tri thu hai {1},

gia tri lon nhat {2}”, value1, value2, maxValue);

}

}

-----------------------------------------------------------------------------

Kết quả:

Gia tri thu nhat 10, gia tri thu hai 20, gia tri lon nhat 20

-----------------------------------------------------------------------------

Trong ví dụ minh họa trên toán tử ba ngôi được sử dụng để kiểm tra xem giá trị của value1 có lớn hơn giá trị của value2, nếu đúng thì trả về giá trị của value1, tức là gán giá trị value1 cho biến maxValue, còn ngược lại thì gán giá trị value2 cho biến maxValue.

Trong C# dùng dấu “=” làm dấu phép gán. gán có thể được thể hiện dưới các dạng như sau:

Biến = Biểu_thức

Biến op = Biểu_thức

Cách viết dưới tương đương Biến = (biến) op (Biểu_thức) trong đó op là một toán tử nào đó. Giá trị của Biểu_thức sẽ được gán cho biến sau câu lệnh này

Ví dụ: x + = y tương đương với x = x+y

Nếu ta thêm dấu ; vào sau biểu thức gán sẽ thu được một câu lệnh gán

gán có thể được sử dụng trong các phép toán và các câu lệnh như các biểu thức thông thường. Chẳng hạn khi viết: a=b=5; thì điều đó có nghĩa rằng gán giá trị của biểu thức b=5 cho biến a. Kết quả là b=5 và a=5. Tương tự sau câu lệnh: x = (a=5) * (b=10); sẽ gán 5 cho a, 10 cho b và sau đó gán tiếp 50 cho x

Những đối tượng của một kiểu dữ liệu này có thể được chuyển sang những đối tượng của một kiểu dữ liệu khác thông qua cơ chế chuyển đổi tường minh hay ngầm định. Chuyển đổi nhầm định được thực hiện một cách tự động, trình biên dịch sẽ thực hiện công việc này. Còn chuyển đổi tường minh diễn ra khi chúng ta gán ép một giá trị cho kiểu dữ liệu khác.

Việc chuyển đổi giá trị ngầm định được thực hiện một cách tự động và đảm bảo là không mất thông tin và tuân theo quy tắc sau:

Ví dụ, chúng ta có thể gán ngầm định một số kiểu short (2 byte) vào một số kiểu int (4 byte) một cách ngầm định. Sau khi gán hoàn toàn không mất dữ liệu vì bất cứ giá trị nào của short cũng thuộc về int:

short x = 10;

int y = x; // chuyển đổi ngầm định

Tuy nhiên, nếu chúng ta thực hiện chuyển đổi ngược lại, chắc chắn chúng ta sẽ bị mất thông tin. Nếu giá trị của số nguyên đó lớn hơn 32.767 thì nó sẽ bị cắt khi chuyển đổi. Trình biên dịch sẽ không thực hiện việc chuyển đổi ngầm định từ số kiểu int sang số kiểu short:

short x;

int y = 100;

x = y; // Không biên dịch, lỗi !!!

không bị lỗi chúng ta phải dùng lệnh gán tường minh, đoạn mã trên được viết lại

short x;

int y = 100;

x = (short) y; // Ép kiểu tường minh, trình biên dịch không báo lỗi

Trong một biểu thức mà có nhiều kiểu dữ liệu khác nhau, trước khi tính toán máy sẽ chuyển từ kiểu thâp hơn lên kiểu cao hơn theo sơ đồ như ở trên.

Ví dụ:

short x=1,y;

y=4-x; /*Khi biên dịch sẽ bị lỗi, vì 4-x sẽ cho kiểu int và không thể gán cho biến kiểu short*/

Nếu ta viết

y=(short)(4-y);/* Khi biên dịch sẽ không bị lỗi, vì 4-x cho ta kiểu int và sau đó được chuyển thành kiểu short*/

Vì vậy biểu thức ép kiểu tường minh là: (kiểu dữ liệu)

Chú ý: Khi ép kiểu thì bản thân biểu thức không bị thay đối kiểu mà chỉ có giá trị của biểu thức ép kiểu mới thay đổi

0