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);
}
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);
}
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õ.
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!";
! là phủ định điều kiện a
if(!a) là tương đương với if(a==0)
??? lạ nhỉ
Nhưng if (!a) <=> if(a == 0) ???
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ì
Ố ồ hay quá
Bác này tỏ tình trá hình =))
cái này vừa học vừa chơi haha
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 ^^
! 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.
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)
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.
mình nhầm
chắc đọc là nếu ko phải a thì trả về b …
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;
}