为什么一个给我一个int而另一个不给我?

    toupper(member_names[2]);


和:

    member_names[2] = toupper(member_names[2]);

最佳答案

toupper接受一个字符(出于大多数历史原因将其编码为int)并返回该字符的大写形式。

因此,您的第一个版本并没有真正完成任何事情。您的第二个将member_names[2]转换为大写形式。

还要注意(在大多数实现中)char可以具有负值(例如,ISO 8859- *中带重音符号的字符)。将负值传递给toupper可能/将导致(严重)问题-除非member_namesunsigned char的数组,否则通常需要在传递给unsigned char之前将其设置为toupper

member_names[2] = toupper(static_cast<unsigned char>(member_names[2]));

关于c++ - 为什么这样使用这些工具会有所不同?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29859965/

10-11 15:56