刚毕业找工作面试遇到这个问题,正确答案是有符号。但我答错了,因为我印象中有些扩展ASCII字符是超过128的,其实是两码事,就像UTF和Unicode也是两码事。
后来看的代码多了,发现这个问题也不用记,因为我见过unsigned char的写法,但从没见过signed char,说明默认是有符号的。
同理,size_t是无符号,而ssize_t是有符号的。
对于原先的问题,其实换一个问法更好:如何通过代码验证char是否有符号?
下面是一个简单实现:
1 #include <iostream> 2 3 template<class T> bool isSigned() { return (T)-1 < (T)0; } 4 5 int main() 6 { 7 std::cout << isSigned<char>() << std::endl; 8 std::cout << isSigned<unsigned char>() << std::endl; 9 return 0; 10 }
程序输出是1和0.
原文:https://www.cnblogs.com/xrst/p/13246821.html