Hỏi về phép cộng 2 số nguyên trong C

mọi người cho em hỏi em viết sai chỗ nào ạ vì khi em chạy cho số thứ 1 bằng 1, số thứ 2 bằng 2 thì nó ra 1+2=c ?
Em cảm ơn ạ

#include<stdio.h>

int main()
{
	char a, b, c;
	scanf("%c %c", &a, &b);
	c=a+b;
	printf("%c+%c=%c", a, b, c);
	return 0;
}

Bạn nhập vào kiểu ký tự nên nhập 1 thì nó là kì tự ‘1’, 2 là ký tự ‘2’.
Trong bảng mã ascii, ‘1’ có giá trị 49, ‘2’ có giá trị 50,
Do đó, ‘1’ + ‘2’ = 99. Bạn in ra kiểu ký tự, nên nó in ra ‘c’ là vì c có giá trị 99 trong bảng mã ascii

5 Likes

vậy nếu em thay đoạn char bằng int thì được ạ ?

1 Like

Vì bạn truyền cho scanf là %c nên nó vẫn đọc như vậy, và bạn in ra %c nên kết quả cũng vẫn như vậy

3 Likes

chuyển char thành int nhá

Lần này e thay %c thành %d thì khi nhập số thứ nhất là 1 số bất kì ví dụ là 1, số thứ là 2 thì nó sẽ in ra 0+2=2 ạ. cho em hỏi em sai ở đâu ạ.
Em cảm ơn ạ.

#include<stdio.h>

int main()
{
	char a, b, c;
	scanf("%d %d", &a, &b);
	c=a+b;
	printf("%d+%d=%d", a, b, c);
	return 0;
}
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?