en cambio, si doy la opción como 'aa', imprime a+b en lugar de no imprimir la condición predeterminada. ¿Por qué acepta 'aa' como opción?
#include <stdio.h> int main() { int a=10,b=20; char ch; scanf("%c",&ch); switch(ch) { case 'a': printf("%d",a+b); break; case 'b': printf("%d",a*b); default: printf("thank u"); } }Char se representa en la memoria con 1 byte . Si desea una cadena, como 'aaa', en la memoria tenemos 3 caracteres con un byte => 3 * 1 = 3 bytes. Representamos esto con una matriz. Como char string[200], aquí tenemos char * 200.
Cuando intenta leer 'aaa' de stdin en char, lee el primer carácter de stdin, porque no asigna memoria para todos los caracteres.
Intente imprimir en stdout 'ch'. Después de poner scanf("%c", &ch), ponga printf("%c", ch); e imprimirá el primer carácter de stdin.
#include <stdio.h> int main() { int a=10,b=20; char ch; // One character scanf("%c",&ch); // Read one character, if we read 'aaa', ch is equal with 'a' beacause we read first one character from stdin. switch(ch) { //here ch is equal with one character. case 'a': printf("%d",a+b); break; case 'b': printf("%d",a*b); default: printf("thank u"); } }