以下代码有效:
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;
}
是否可以像我一样在条件表达式中分配值?
答案 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;
}
这是一个实例。
当然,您应该将toupper
和tolower
与isupper
和islower
结合使用来更改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
}