为什么一个人给我一个int而另一个不给我?:
toupper(member_names[2]);
和
member_names[2] = toupper(member_names[2]);
答案 0 :(得分:1)
toupper
函数不会修改其参数。
所以这个电话:
toupper(member_names[2]);
返回您忽略的值。
另一个版本从toupper
函数获取值并将其分配给member_names[2]
,从而修改先前的值。
答案 1 :(得分:0)
toupper
接受一个字符(由于大多数历史原因而编码为int
)并返回该字符的大写等效字符。
因此,您的第一个版本并没有真正完成任何事情。你的第二个将member_names[2]
转换为大写的大写字母。
另请注意(在大多数实现中)char
可以具有负值(例如,ISO 8859- *中的重音字符)。将负值传递给toupper
会导致(严重)问题 - 除非member_names
是unsigned char
的数组,否则您通常希望在传递之前将其置于unsigned char
到toupper
:
member_names[2] = toupper(static_cast<unsigned char>(member_names[2]));