VS Code问题20200510--(numeric_limits::min)()无法使用

德赛法 2020-05-10 05:25:52
问题:(numeric_limits<char>::min)()等函数无法显示后续文字。

源码:
#include <iostream>
using namespace std;

// 变量声明
extern int a, b;
extern int c;
extern float f;

int main ()
{
// 变量定义
int a, b;
int c;
float f;

// 实际初始化
a = 10;
b = 20;
c = a + b;

cout << c << endl ;

f = 70.0/3.0;
cout << f << endl ;

return 0;
}

结果:


明显不对。
我注释掉以下代码却能够显示后面的结果。
    // cout << "char: \t\t" << "所占字节数:" << sizeof(char);  
// cout << "\t最大值:" << (numeric_limits<char>::max)(); //(numeric_limits<char>::min)()无法使用
// cout << "\t\t最小值:" << (numeric_limits<char>::min)() << endl;
// cout << "signed char: \t" << "所占字节数:" << sizeof(signed char);
// cout << "\t最大值:" << (numeric_limits<signed char>::max)();
// cout << "\t\t最小值:" << (numeric_limits<signed char>::min)() << endl;
// cout << "unsigned char: \t" << "所占字节数:" << sizeof(unsigned char);
// cout << "\t最大值:" << (numeric_limits<unsigned char>::max)();
// cout << "\t\t最小值:" << (numeric_limits<unsigned char>::min)() << endl; //本程序无法识别unsigned char大小,会出错

查找了<limits>头文件,里面关于char函数有定义,请问这是怎么回事?
...全文
326 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
真相重于对错 2021-02-20
  • 打赏
  • 举报
回复
unsigned char 的最大值,最小值都不是可打印字符,自然也无法打印]
真相重于对错 2021-02-20
  • 打赏
  • 举报
回复
numeric_limits 类模板提供查询各种算术类型属性的标准化方式(例如 int 类型的最大可能值是 std::numeric_limits<int>::max() )。 string 又不是算术类型。
56625079 2021-02-20
  • 打赏
  • 举报
回复 3
试试加上+号。我就是这么解决的

cout << "char: \t\t\t" << "numOfBytes:" << sizeof(char);
cout << "\t\tmaxValue:" << +(numeric_limits<char>::max)();
cout << "\t\t\t\tminValue:" << +(numeric_limits<char>::min)() << endl;

cout << "signed char: \t\t" << "numOfBytes:" << sizeof(signed char);
cout << "\t\tmaxValue:" << +(numeric_limits<signed char>::max)();
cout << "\t\t\t\tminValue:" << +(numeric_limits<signed char>::min)() << endl;

cout << "unsigned char: \t\t" << "numOfBytes:" << sizeof(unsigned char);
cout << "\t\tmaxValue:" << +(numeric_limits<unsigned char>::max)();
cout << "\t\t\t\tminValue:" << +(numeric_limits<unsigned char>::min)() << endl;
德赛法 2020-05-10
  • 打赏
  • 举报
回复
糟糕,头脑晕了,多谢”真相重于对错“提醒。代码复制错了,第一段代码应该是下图代码。
#include<iostream>  
#include <limits>
 
using namespace std;  
  
int main()  
{  
    cout << "type: \t\t" << "************size**************"<< endl;  
    cout << "bool: \t\t" << "所占字节数:" << sizeof(bool);  
    cout << "\t最大值:" << (numeric_limits<bool>::max)();  
    cout << "\t\t最小值:" << (numeric_limits<bool>::min)() << endl;  
    cout << "char: \t\t" << "所占字节数:" << sizeof(char);  
    cout << "\t最大值:" << (numeric_limits<char>::max)();  //(numeric_limits<char>::min)()无法使用
    cout << "\t\t最小值:" << (numeric_limits<char>::min)() << endl;  
    cout << "signed char: \t" << "所占字节数:" << sizeof(signed char);  
    cout << "\t最大值:" << (numeric_limits<signed char>::max)();  
    cout << "\t\t最小值:" << (numeric_limits<signed char>::min)() << endl;  
    cout << "unsigned char: \t" << "所占字节数:" << sizeof(unsigned char);  
    cout << "\t最大值:" << (numeric_limits<unsigned char>::max)();  
    cout << "\t\t最小值:" << (numeric_limits<unsigned char>::min)() << endl;  //本程序无法识别unsigned char大小,会出错
    cout << "wchar_t: \t" << "所占字节数:" << sizeof(wchar_t);  
    cout << "\t最大值:" << (numeric_limits<wchar_t>::max)();  
    cout << "\t\t最小值:" << (numeric_limits<wchar_t>::min)() << endl;  
    cout << "short: \t\t" << "所占字节数:" << sizeof(short);  
    cout << "\t最大值:" << (numeric_limits<short>::max)();  
    cout << "\t\t最小值:" << (numeric_limits<short>::min)() << endl;  
    cout << "int: \t\t" << "所占字节数:" << sizeof(int);  
    cout << "\t最大值:" << (numeric_limits<int>::max)();  
    cout << "\t最小值:" << (numeric_limits<int>::min)() << endl;  
    cout << "unsigned: \t" << "所占字节数:" << sizeof(unsigned);  
    cout << "\t最大值:" << (numeric_limits<unsigned>::max)();  
    cout << "\t最小值:" << (numeric_limits<unsigned>::min)() << endl;  
    cout << "long: \t\t" << "所占字节数:" << sizeof(long);  
    cout << "\t最大值:" << (numeric_limits<long>::max)();  
    cout << "\t最小值:" << (numeric_limits<long>::min)() << endl;  
    cout << "unsigned long: \t" << "所占字节数:" << sizeof(unsigned long);  
    cout << "\t最大值:" << (numeric_limits<unsigned long>::max)();  
    cout << "\t最小值:" << (numeric_limits<unsigned long>::min)() << endl;  
    cout << "double: \t" << "所占字节数:" << sizeof(double);  
    cout << "\t最大值:" << (numeric_limits<double>::max)();  
    cout << "\t最小值:" << (numeric_limits<double>::min)() << endl;  
    cout << "long double: \t" << "所占字节数:" << sizeof(long double);  
    cout << "\t最大值:" << (numeric_limits<long double>::max)();  
    cout << "\t最小值:" << (numeric_limits<long double>::min)() << endl;  
    cout << "float: \t\t" << "所占字节数:" << sizeof(float);  
    cout << "\t最大值:" << (numeric_limits<float>::max)();  
    cout << "\t最小值:" << (numeric_limits<float>::min)() << endl;  
    cout << "size_t: \t" << "所占字节数:" << sizeof(size_t);  
    cout << "\t最大值:" << (numeric_limits<size_t>::max)();  
    cout << "\t最小值:" << (numeric_limits<size_t>::min)() << endl;  
    cout << "string: \t" << "所占字节数:" << sizeof(string) << endl;  
    // << "\t最大值:" << (numeric_limits<string>::max)() << "\t最小值:" << (numeric_limits<string>::min)() << endl;  
    cout << "type: \t\t" << "************size**************"<< endl;  
    return 0;  
}
真相重于对错 2020-05-10
  • 打赏
  • 举报
回复
没看懂你要问什么???? 第一段代码和后面有何联系???? unsigned char 最大 肯定打印不出来啊。

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧