首页后端开发ASP.NET区分C++常量表达式、const、constexpr(附代码)

区分C++常量表达式、const、constexpr(附代码)

时间2024-01-30 22:50:02发布访客分类ASP.NET浏览455
导读:收集整理的这篇文章主要介绍了区分C++常量表达式、const、constexpr(附代码),觉得挺不错的,现在分享给大家,也给大家做个参考。常量表达式是指值不会改变且在编译过程中就能够得到计算结果的表达式,能在编译时求值的表达式。例1:#i...
收集整理的这篇文章主要介绍了区分C++常量表达式、const、constexpr(附代码),觉得挺不错的,现在分享给大家,也给大家做个参考。常量表达式是指值不会改变且在编译过程中就能够得到计算结果的表达式,能在编译时求值的表达式。

例1:

#include iostream>
    using namespace std;
int main(){
    		const int a1 = 10;
               // a1是常量表达式。	const int a2 = a1 + 20;
          // a2是常量表达式	int a3 = 5;
                      // a3不是常量表达式	const int a4 = a3;
               // a4不是常量表达式,因为a3程序的执行到达其所在的声明处时才初始化,所以变量a4的值程序运行时才知道。但编译没问题!	return 0;
}
    

以上代码可正常编译。

说明了const声明的不一定就是常量表达式!

C++11新标准规定,允许将变量声明为constexPR 类型以便由编译器来验证变量的值是否是常量表达式constexpr 指定符声明可以在编译时求得函数或变量的值,声明为constexpr的变量一定是一个常量,而且必须用常量表达式来进行初始化。

例2:

#include iostream>
    using namespace std;
int main(){
    		const int a1 = 10;
               // a1是常量表达式。	const int a2 = a1 + 20;
          // a2是常量表达式	int a3 = 5;
                      // a3不是常量表达式	constexpr int a4 = a3;
               // a4不是常量表达式,因为a3程序的执行到达其所在的声明处时才初始化,所以变量a4的值程序运行时才知道。编译报错!	return 0;
}
    

constexpr int a4 = a3; 编译将报错!

例3:

#include iostream>
    using namespace std;
int main(){
    		const int a1 = 10;
               // a1是常量表达式。	const int a2 = a1 + 20;
          // a2是常量表达式	int a3 = 5;
                      // a3不是常量表达式	const int a4 = a3;
               //   a4不是常量表达式,因为a3程序的执行到达其所在的声明处时才初始化,所以变量a4的值程序运行时才知道。编译报错!	char arr1[a2];
       // 没问题	char arr2['y'];
      // 没问题,'y'的ASCII码为121,相当于 char arr2[121];
    	char arr3[a4];
       // 编译报错,因为a4不是常量表达式	return 0;
}
    

相关文章:

分享多个C#常用正则表达式的实例

PHP定义常量是,const和define的区别

以上就是区分C++常量表达式、const、constexpr(附代码)的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

上一篇: C#学习记录:编写高质量代码改善...下一篇:Microsoft C++ 语言扩展:try-ex...猜你在找的ASP.NET相关文章 C# 一些面试试题的实例教程2022-05-16.NET 6开发TodoList应用之请求日志组件HttpLogging介绍2022-04-16.NET 6中间件Http Logging使用介绍2022-04-16gojs一些实用的高级用法2022-04-16.NET6开发TodoList应用之实现查询排序2022-04-16.NET6开发TodoList应用之实现数据塑形2022-04-16.NET微服务架构CI/CD自动打包镜像2022-04-16Asp.Net Core 使用Monaco Editor 实现代码编辑器功能2022-04-16.NET微服务架构CI/CD自动构建Jenkins+Gitee2022-04-16.Net Core微服务网关Ocelot集成Consul2022-04-16 其他相关热搜词更多phpjavapython程序员loadpost-format-gallery

若转载请注明出处: 区分C++常量表达式、const、constexpr(附代码)
本文地址: https://pptw.com/jishu/593142.html
怎么利用配置文件来管理多个 Node.js 进程 Microsoft C++ 语言扩展:try-except 语句结构化异常

游客 回复需填写必要信息