条件表达式。大写到小写

时间:2014-07-08 05:12:41

标签: c

以下代码有效:

int convert(int s){
    int result = 0;
    result = (s >= 97 && s <= 122)? s -32 : s+32;
    return result;
}

但是,由于在函数内部使用了s的副本,您可以将函数更改为以下内容吗?

int convert(int s){
    (s >= 97 && s <= 122)? s -= 32 : s += 32;
    return s;
}

是否可以像我一样在条件表达式中分配值?

2 个答案:

答案 0 :(得分:1)

是的,这是允许的。你可以尝试这样:

#include <ctype.h>
#include <stdio.h>

int main() {
    putchar(tolower('A'));
}

答案 1 :(得分:1)

是的,因为您正在编辑s的本地副本,所以允许它。请参阅此处的实例:

试试这个:

int convert(int s){
    (s >= 97 && s <= 122)? (s -= 32) : (s += 32);
    return s;
}

int main(void) {

    int val = 10, val2;
    val2 = convert(val);
    printf("%d %d\n", val, val2);
    return 0;
}

这是一个实例。

http://ideone.com/5aJcOv

当然,您应该将touppertolowerisupperislower结合使用来更改ascii字符的大小写:

#include <ctype.h>
char toggleCase(char c)
{
    if (c >= 'a') {  // Check that it is a letter
        if (isupper(c)) return tolower(c); //Convert it
        return toupper(c);
    }
    return c; // Otherwise dont 
}