2.2 C语言之常量

2.2 C语言之常量

  • 一、常量

一、常量

  • 类似于1234的整数常量属于int类型。
	printf("%d\n", 1234);
  • long类型的常量以l或L结尾
	printf("%d\n", 123456789l);
	printf("%d\n", 123456789L);
  • 如果一个整数太大,以至于无法用int类型表示时,也将被当作long类型处理(存疑
  • 无符号常量以字母u或U结尾,后缀ul或UL表明是unsigned long类型
	printf("%u\t%u\t%u\t%u\n", 4294967295u, 4294967295U, 4294967295ul, 4294967295UL);
  • 浮点数常量中包含一个小数点(123.5)或一个指数(1e-2),或两者都有
	printf("%f\t%f\n", 1.235, 123.5e-2);
  • 没有后缀的浮点数常量为double类型。后缀f或F表示float类型,而后缀l或L则表示long double类型
	printf("%f\n", 1.24);
	printf("%f\n", 1.24f);
	printf("%f\n", 1.24F);
	printf("%f\n", 1.24l);
	printf("%f\n", 1.24L);
  • 整型数除了用十进制表示外,还可以用八进制或十六进制表示。带前缀0的整型常量表示它为八进制形式,前缀为0x或0X表示它为十六进制形式。例如:十进制数31可以写成八进制形式037,也可以写成十六进制形式0x1f或0X1F。八进制与十六进制的常量也可以使用后缀L表示long类型,使用后缀U表示unsigned类型。例如:0XFUL是一个unsigned long类型的常量,其值等于十进制数15
	printf("%d\n", 31);
	printf("%d\n", 037);
	printf("%d\n", 0x1f);
	printf("%d\n", 0X1F);
	printf("%d\n", 0XFUL);
	printf("%d\n", 017UL);
	printf("%o\n", 037);
	printf("%x\n", 0X1F);
  • 一个字符常量就是一个整数,写的时候将一个字符括在单引号中,如’x’。字符在机器字符集中的数值就是字符常量的值。例如,在ASCII字符集中,字符’0’的值为48,它与数值0没有关系。字符常量一般用来与其他字符比较,但也可以像其他整数一样参与数值运算。
	printf("%d\n", '0'); // 48
	printf("%d\n", 'A'); // 65
	printf("%d\n", 'a'); // 97
	printf("%d\n", '0' < 'A');
	printf("%d\n", '0' > 'A');
	printf("%d\n", '0' - 'A');
  • 还有一种字符常量比较特殊,那就是转义字符,比如’\n’,转义字符看起来像是两个字符,但只表示一个字符。另外,我们可以用’\ooo’,‘\xhh’ 这种表示任意字节大小的位模式,其中ooo代表1~3个八进制数字(0…7),hh代表一个或多个十六进制数字(0…9,a…f,A…F)
	printf("a%db\n", '\013'); // ASCII vertical tab
	printf("a%db\n", '\007'); // ASCII bell charactor
	printf("a%db\n", '\xb'); // ASCII vertical tab
	printf("a%db\n", '\x7'); // ASCII bell charactor

在这里插入图片描述

  • ANSI C语言中的全部转义字符序列如下所示:
转义字符含义转义字符含义
\a响铃符\\反斜杠
\b回退符\?问号
\f换页符\’单引号
\n换行符\"双引号
\r回车符\ooo八进制数
\t横向制表符\xhh十六进制数
\v纵向制表符
  • 字符常量’\0’表示值为0的字符,也就是空字符(null)。我们通常用’\0’的形式代替0,以强调某些表达式的字符属性,但其数字值为0。
	printf("a%db\n", '\0'); // ASCII NUT
  • 常量表达式是仅仅包含常量的表达式。比如
	#define MAXLINE 1000
	char line[MAXLINE + 1]; // 两个常量相加
  • 字符串常量,也叫字符串字面值,是用双引号括起来的0个或多个字符组成的字符序列。比如:
    “I am a string” 或 “” (空字符串) 都是字符串。双引号不是字符串的一部分,它只用于限定字符串。编译时,可以将多个字符串常量连起来。
	printf("%s\n", "a\"b\'"); // 转义字符
	printf("%s\n", "hello, world");
	printf("%s\n", "hello," " world"); // 多个字符串常量连接
  • 字符串常量的本质是一个字符数组,使用’\0’表示字符串的结尾,因此存储字符串的物理存储单元数比括在双引号中的字符数多一个。标准库函数strlen(s)可以返回字符串参数s的长度,但长度不包含’\0’。当然,我们可以设计一个strlen(s)函数
	printf("%d", strlen("hello"));
	int strlen(char s[]) {
		int l;
		l = 0;
		while (s[l] != '\0')
			l++;
		return l;
	}
   标准头文件<string.h>中声明了strlen和其他字符串函数
	#include <string.h>
	printf("%d", strlen("hello"));
  • 我们应该搞清楚字符常量和仅包含一个字符的字符串常量的区别:‘x’和"x"是不同的,前者是一个整数,其值是字母x在机器字符集中的对应的数值;后者是一个包含一个字符(x)和一个结束符’\0’的字符数组。
  • 枚举常量,是另外一种类型的常量,是一个常量整型值的列表,比如:
    enum boolean {NO, YES};
    enum months {JAN=1, FEB, MAR};
    • 在没有显式说明的情况下,enum类型中第一个枚举的值为0,第二个为1,依次类推;比如,NO的值为0,YES的值为1
    • 如果只指定了部分枚举的值,那么未指定值的枚举的值将依着最后一个指定值向后递增。比如,FEB的值为2,MAR的值为3
    • 不同枚举中的名字必须互不相同
    • 同一枚举中的不同名字可以有相同的值
	#include <stdio.h>
	enum boolean { NO, YES };
	enum months { JAN = 1, FEB, MAR };
	
	main()
	{
		printf("NO: %d\n", NO);
		printf("YES: %d\n", YES);
		printf("JAN: %d\n", JAN);
		printf("FEB: %d\n", FEB);
		printf("MAR: %d\n", MAR);
		return 0;
	}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/235627.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LINUX-ROS集成安装MQTT库步骤注意事项

环境信息 roottitan-ubuntu1:/home/mogo/data/jp/paho.mqtt.cpp# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 18.04.5 LTS Release: 18.04 Codename: bionic 步骤 安装doxygen sudo apt install doxygen 构…

Tomcat从认识安装到详细使用

文章目录 一.什么是Tomact?二.Tomcat的安装1.下载安装包2.一键下载3.打开Tomcat进行测试4.解决Tomcat中文服务器乱码 三.Tomcat基本使用1.启动与关闭Tomcat2.Tomcat部署项目与浏览器访问项目 四.Tomcat操作中的常见问题1.启动Tomcat后&#xff0c;启动窗口一闪而过&#xff1f…

Day15——File类与IO流

1.java.io.File类的使用 1.1 File类的理解 File 类及本章下的各种流&#xff0c;都定义在 java.io 包下。一个 File 对象代表硬盘或网络中可能存在的一个文件或者文件目录&#xff08;俗称文件夹&#xff09;&#xff0c;与平台无关。&#xff08;体会万事万物皆对象&#xf…

金山终端安全系统V9.0 update_software_info_v2.php处SQL注入漏洞分析

文章目录 金山终端安全系统V9.0 update_software_info_v2.php处SQL注入漏洞分析前言一、漏洞描述二、影响版本三、POC四、漏洞原理分析参考链接&#xff1a; 金山终端安全系统V9.0 update_software_info_v2.php处SQL注入漏洞分析 前言 免责声明&#xff1a;请勿利用文章内的相…

idea 本身快捷键ctrl+d复制 无法像eclipse快捷键ctrl+alt+上下键,自动换行格式问题解决

问题 例如我使用ctrld 想复制如下内容 复制效果如下&#xff0c;没有自动换行&#xff0c;还需要自己在进行调整 解决 让如下快捷键第一个删除 修改成如下&#xff0c;将第二个添加ctrld 提示&#xff1a;对应想要修改的item&#xff0c;直接右键&#xff0c;remove是删…

Nginx反向代理跳过国内备案(以宝塔面板为例)

需要两台服务器&#xff0c;一台已备案或者免备案&#xff0c;一台国内主力服务器放你的项目。 先把域名解析到A服务器 然后在A服务器里配置 server {listen 80;server_name 你的域名;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_…

(3)kylin系统部署weblogic项目

一、jdk迁移 1、拷贝成功后要配置环境变量 vi /etc/profile 将jdk的目录添加进去 2、将jdk安装目录拷贝后权限会发生变化&#xff0c; 要对jdk下bin目录中的所有文件修改权限&#xff1a; chmod x ./* 回车即可 ----------------------------- 环境变量 export …

ES6原生音乐播放器(有接口)

视频展示 ES6音乐播放器 项目介绍 GutHub地址&#xff1a;GitHub - baozixiangqianchong/ES6_MusicPlayer: 音乐播放器 ES6_MusicPlayer 是基于JavaScriptES6Ajax等通过原生构建的项目。能够充分锻炼JS能力。 本项目有主页、详情页、歌单页面三部分组成 ├── assets&…

多维时序 | MATLAB实现RIME-CNN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测

多维时序 | MATLAB实现RIME-CNN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测 目录 多维时序 | MATLAB实现RIME-CNN-BiLSTM-Multihead-Attention多头注意力机制多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现RIME-…

编程学新要求:OS发布之前,都应该在各种虚拟机上测试

这几天在VirtualBox上安装ArchLinux&#xff0c;掌握了方法之后&#xff0c;非常顺利。进入桌面之后&#xff0c;又出问题了&#xff0c;如下图&#xff1a; 底部的那个工具条&#xff0c;空空如也。原因是显示错误。这怎么用&#xff1f; 所以编程学干脆提出一个新要求&#x…

leetcode 股票DP系列 总结篇

121. 买卖股票的最佳时机 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。 只能进行一次交易 很简单&#xff0c;只需边遍历边记录最小值即可。 class Solution { public:int maxProfit(vector<int>& prices) {int res …

【JavaWeb笔记】单选框,结合Servlet

各个部分的作用 jsp部分 form action"..."&#xff1a;表单标签&#xff0c;供用户提交数据。内部的submit点击之后相当于是点action的URL input type"radio"&#xff1a;输入类型为单选框。把name设置为一样的&#xff0c;这样效果上就是单选&#xff…

C++ 对象数组

对象数组用于创建同一个类的多个对象。声明对象数组的方法与声明标准类陷阱数组相同。以Stock类为例&#xff1a; class Stock { private:std::string company;int shares;double share_val;double total_val;void set_tot(){return total_val shares * share_val;} public:S…

基于Java SSM框架实现电影售票系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现电影售票系统演示 摘要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&#…

SU渲染受到电脑性能影响大吗?如何提高渲染速度

一般3d设计师们在进行设计工作前都需要提供一台高配电脑&#xff0c;那么你这知道su渲染对电脑要求高吗&#xff1f;电脑带不动su怎么解决&#xff1f;su对电脑什么配件要求高&#xff1f;今天这篇文章就详细为大家带来电脑硬件对su建模渲染的影响&#xff0c;以及su渲染慢怎么…

Flask应用基础入门总结

【1】使用migrate方式进行数据库连接 使用migrate方式进行数据库连接需要在终端分别运行三行代码&#xff1a; #init&#xff08;运行一次即可&#xff09;&#xff08;此db为自己设置的连接数据库的对象,可以修改&#xff09; flask db init #&#xff08;将orm模型生成迁移…

qt creator配置opencv库 (MSVC版本)

目录 1. MSVC版本 1.1 使用cmake编译opencv 1.2 再使用visual studio 2019生成opencv的lib,dll 1.3 配置opencv的系统环境变量 1.4 新建qt项目 1. MSVC版本 1.1 使用cmake编译opencv 1.2 再使用visual studio 2019生成opencv的lib,dll 1.3 配置opencv的系统环境变量 D:…

了解构造函数原型对象的语法特征,掌握 JavaScript 中面向对象编程的实现方式,基于面向对象编程思想实现 DOM 操作的封装。(第三天)

有什么不懂可以去看我前两天的笔记 https://blog.csdn.net/weixin_70007095/article/details/134905674 目录 有什么不懂可以去看我前两天的笔记 JavaScript 进阶 - 第3天笔记 编程思想 面向过程 面向对象 构造函数 原型对象 constructor 属性 对象原型 原型继承 原型链 JavaSc…

2021版吴恩达深度学习课程Deeplearning.ai 05序列模型 12.5

学习内容 05.序列模型 1.1 为什么用序列模型 1.序列模型常见的应用 1.2 注释 notation 1.*T_x(i)表示训练样本x(i)的序列长度&#xff0c;T_y(i)表示target(i)的序列长度2.训练集表示单词的方式*构建字典的方式*在训练集中查找出现频率最高的单词*网络搜集常用字典3.如果遇…