static_assert和numeric_limits

static_assert  参考: https://blog.csdn.net/drdairen/article/details/76689014

assert的作用是先计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。assert分为动态断言和静态断言2种。

c++0x引入了static_assert关键字,用来实现编译期间的断言,叫静态断言。
语法:static_assert(常量表达式,要提示的字符串);
如果第一个参数常量表达式的值为false,会产生一条编译错误,错误位置就是该static_assert语句所在行,第二个参数就是错误提示字符串。
然后通过调用 abort 来终止程序运行。

 

#include <iostream>  
#include <stdio.h>   
#include <limits>       
                     
using namespace std; 
                     
int main()           
{                    
    cout<< numeric_limits<float>::digits10 <<endl;
    float ff = 11111;                                                                                                                                         
    float dd = 1111111;
    float cc = 11111111;
                     
    cout<<ff<<"   "<<dd<<"     "<<cc<<endl;
    return 0;        
}            

 输出:

➜  t6 ./test1
6
11111   1.11111e+06     1.11111e+07

numeric_limits<float>::digits10 : 表示float类型如果以十进制表示的话的最多的有效数字位数。

posted @ 2020-09-02 19:49  熊鑫xxx1x  阅读(198)  评论(0)    收藏  举报