Công dụng của dấu ! trong C++ là gì?

cho em hỏi ngoài việc dùng trong != (khác) thì dấu ! dùng làm gì nữa ạ? tại em vừa tìm thấy đoạn code tìm UCLN trên mạng có cái này

int ucln( int a, int b) //UCLN
{
    if (!a) return b;
    return ucln(b%a, a);
}
1 Like
2 Likes

thank you ^^, tại em vừa mày mò học C++ nên nhiều chỗ cơ bản chưa nắm rõ.

1 Like

Dấu ! còn được dùng trong hàm printf hoặc cout, để dòng được xuất ra màn hình là câu cảm thán. Ví dụ:

printf("Anh yeu em!");

hay là

cout << "Anh yeu em!";

:smiley: :smiley: :smiley: :smiley: :smiley: :smiley: :smiley:

12 Likes

! là phủ định điều kiện a
if(!a) là tương đương với if(a==0)

7 Likes

??? lạ nhỉ :open_mouth: :open_mouth:

1 Like

Câu trả lời của @kongdap ngắn gọn mà cụ thể nhất.

4 Likes

Nhưng if (!a) <=> if(a == 0) ???

1 Like

Hoàn toàn chính xác như vậy.

if (a) có nghĩa là nếu a != 0, có thể đọc là nếu có a thì
if (! a) có nghĩa là nếu a == 0, có thể đọc là nếu không a thì

11 Likes

Ố ồ hay quá :wink: :wink:

1 Like

Bác này tỏ tình trá hình =))

5 Likes

cái này vừa học vừa chơi haha

1 Like

anh Đạt siêng dữ ^^ topic nào hầu như anh cũng reply ^^ em thay mặt mọi ng cảm ơn anh và các pro nhiều nghen <3 - Idol ^^

3 Likes

! là toán tử đảo ngược bit: từ 1 thành 0, từ 0 thành 1. Hiểu như vậy thì toàn diện hơn.

1 Like

Toán tử ~ mới đảo bit O3O

Còn ! thì true thành false, false thành true thôi.
Như !3 = 0
Còn ~3 = 1100 (-4)

2 Likes

Có một cái nhiều người hay nhầm lẫn đáng tiếc về cái vụ này.
Đó là người ta dùng chuẩn mà không có true, false thì người ta thường phải tự define lấy theo kiểu

#define false 0
#define true (!false)

dẫn đến nhiều người lầm tưởng những số như khác 1 cũng sẽ bằng true, dẫn đến lúc code thế này

if (bien_nao_do_kieu_char == true) {
 //do something
}
else {
 //do something else
}

nếu bien_nao_do_kieu_char = 127 chẳng hạn, người ta nghĩ nó vào nhánh đầu nhưng nó lại nhảy vào nhánh else khiến họ rất băn khoăn.

4 Likes

mình nhầm :sweat_smile:

2 Likes

chắc đọc là nếu ko phải a thì trả về b …

1 Like

Một ví dụ cho bạn:

 #include   <conio.h>
 #include   <stdio.h>
int main(void)
{
int c;
int extended=0;
c=getch();
if(!c)
extended = getch();
if (extended)
printf("Extended");
else
printf("Not extended");
		 return 0;
}
1 Like

A post was split to a new topic: Dấu % trong C++ là gì?

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?