printf中的条件语句

时间:2018-12-08 11:49:53

标签: 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):(ch)));
    return 0;
}

请帮助我理解。

1 个答案:

答案 0 :(得分:1)

char不是函数。您无法致电char(ch)。如果要进行类型转换,可以这样进行:

(char) ch

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

ch >= 'a'

即使chint

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

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