2.2 C语言之常量

news/2024/7/2 23:36:06

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;
	}

http://lihuaxi.xjx100.cn/news/1883037.html

相关文章

D28|买卖股票的最佳时机+跳跃游戏

122.买卖股票的最佳时机 II 初始思路&#xff1a; 这道题解题的时候比较像在找规律&#xff0c;发现只要计算这个过程中的两数之差然后相加即可。 题解复盘&#xff1a; 可以更加清晰的发现如何从题意中获得贪心的思路。 如何贪心&#xff1a;局部最优&#xff1a;收集每天的…

PPP协议概述与实验示例

PPP协议概述与实验示例 概述 PPP&#xff08;Point-to-Point Protocol&#xff09;是一种用于在点对点连接上传输多协议数据包的标准方法。它已经成为最广泛使用的互联网接入数据链路层协议&#xff0c;可以与各种技术结合&#xff0c;如ADSL、LAN等&#xff0c;实现宽带接入…

TCP 和 UDP 区别? 2、TCP/IP 协议涉及哪几层架构? 3、描述下 TCP 连接 4 次挥手的过程?为什么要 4 次挥手?

文章目录 1、TCP 和 UDP 区别&#xff1f;2、TCP/IP 协议涉及哪几层架构&#xff1f;3、描述下 TCP 连接 4 次挥手的过程&#xff1f;为什么要 4 次挥手&#xff1f;4、计算机插上电源操作系统做了什么&#xff1f;5、Linux 操作系统设备文件有哪些&#xff1f; 1、TCP 和 UDP …

选项式API和组合式API

简介 Vue 3支持选项式API和组合式API。其中&#xff0c;选项式API是从Vue 2开始使用的一种写法&#xff0c;而Vue 3新增了组合式API的写法。 选项式API 选项式API是一种通过包含多个选项的对象来描述组件逻辑的API&#xff0c;其常用的选项包括data、methods、computed、watch…

人工智能在安全领域的应用

ChatGPT 等 AI 应用在网络安全领域的应用效果明显&#xff0c;其自动编程能力、分析能力及自身集成的知识库能够帮助网络安全从业者提升工作效率&#xff0c;改进组织的网络安全计划。 &#xff08;一&#xff09;代码生成与检测能力 可用于开发漏洞挖掘工具。如目前可以利用…

事业编《综应 综合知识应用能力 综合应用》笔记

文章目录&#xff1a; 一&#xff1a;归纳概况题 二&#xff1a;对策措施题 三&#xff1a;综合分析题 四&#xff1a;公文写作题 五&#xff1a;事务处理题 六&#xff1a;案例分析题 1.问题类 2.原因类 3.影响类 4.场景方案类 七&#xff1a;材料作文题 八&#…

麒麟系统10s无法登录问题分析报告

概述 10S 4.0.2-sp4反馈系统无法登录。提示密码错误 分析 怀疑用户密码错误&#xff0c;添加consoletty0&#xff0c;init/bin/bash进单用户修改密码后 故障依旧 排除密码错误怀疑密码文件权限问题导致的密码未修改成功 查看/etc/shadow 相关文件是否进行修改 未见明显异常…

python爬取中南林绩点

1.当我们进入vpn网站的时候会有安全隐私提示我们要让程序可以自己点击&#xff0c;使进入到登录页面 图1 2.查看高级按钮的定位信息&#xff0c;我们可以通过id属性定位 #点击安全设置 browser.find_element(By.ID,"details-button").click() 3.我们需要点击继续访问…