C printf中的条件语句

C printf中的条件语句,c,linux,casting,C,Linux,Casting,代码有什么问题。为什么不能在printf中执行条件语句 #include<stdio.h> int main() { int ch,hc; ch=getchar(); printf("character entered by you is :- %c\n",ch); printf("letter in capital is %c\n",(((char(ch) >='a') && (char(ch)<='z'))?(ch-32

代码有什么问题。为什么不能在printf中执行条件语句

#include<stdio.h>
int main()
{
    int ch,hc;
    ch=getchar();
    printf("character entered by you is :- %c\n",ch);
    printf("letter in capital is %c\n",(((char(ch) >='a') && (char(ch)<='z'))?(ch-32):(ch)));
    return 0;
}
#包括
int main()
{
int-ch,hc;
ch=getchar();
printf(“您输入的字符是:-%c\n”,ch);

printf(“大写字母为%c\n”),(((char(ch)>='a')&&(char(ch)
char
不是函数。您不能调用
char(ch)
。如果您想进行类型转换,可以这样做:

(char) ch
此外,您不必将
int
强制转换为
char
来与字符进行比较。这是完全有效的:

ch >= 'a'
即使
ch
int

因此,知道这一点后,您可以将
printf
行更改为:

printf("letter in capital is %c\n", ( ch >= 'a' ) && (ch <= 'z') ? (ch-32) : (ch));

printf(“大写字母是%c\n”,(ch>='a')&(ch
char(ch)
应该是
ch
(x2)。这不是(在
printf
中)一个条件语句,但使用BTW,将字母转换为大写,更好地使用。但是,请注意并查看;转换并不是那么简单,因为您可能需要使用这个
char(ch)解析UTF-8
似乎不是C。@BasileStarynkevitch UTF-8是“真正”进行大小写转换的最小问题。例如,
ß
的大写版本是
SS
(不是一个字符),而
i
的大写版本是
i
İ
(取决于您所使用的语言)。一般来说,大小写转换取决于语言环境。字符文字实际上是
int
s,
'a'
也是
int
。Wat?它们不是
char
?是的,这里的类型转换是错误的,不能像char(ch)那样使用(char)ch进行类型转换。