初识c语言:字符常量用int储存,整型常量用char储存会怎样

2024年1月4日

上一个月,基本在准备期末考试,就没怎么写博客,现在考完了重头,开始我的第一篇c语言博客

2024年2月17日回来修改。

类似于'a','?'等字符常量用int类型来储存会发生什么,又为什么会这样?整型用char呢

现在就让我们来学习一下(学习c语言不久,主要以printf函数的打印结果为依据,如有考虑不周或错误的地方,还望大佬指正):

一、常量与变量

1.常量

常量,是一种在程序中保持类型和值不变的数据,按照类型有以下几种常量:整型常量,实型常,字符常量,字符串常量,枚举常量。作为初学者,我们先尤其关注字符常量和整型常量。

整型自然不必说,我们要尤其注意的是整型字符常量‘a’。sizeof是作为计算所占字节的关键字,通过sizeof可以更好的帮助我们理解'a'.

// 小心, char和'a'在被=动作前, 是两个独立类型, 没关联
char c = 'a';  
printf("%ld", sizeof(c));      // 结果:1, char类型是1字节
printf("%ld", sizeof('a');    // C结果:4,C++结果:1
                               // C99的标准,    'a'是整型字符常量,常量!常量!常量!被看成是int型, 所以占4字节。
                               // ISO C++的标准,'a'是字符字面量  ,被看成是char型,所以占1字节。
 

2.变量

变量命名不能以数字开头,不能是关键字,严格区分大小写。

因此一个a可能表示一个变量,也有可能表示一个字符,或是表示一个整型的97,最后也有可能是未定义标识符。其中,当a表示变量时,其实在编译时,代表的是一个地址。我们通过打印字符串才能更好的理解。

char a[] = {'a','b','c'};
printf("%s",a);     // 打印abc
printf("%c",a[0]):  //  打印a

其实,最根本的还是printf的函数的参数类型

类型合格的输入参数的类型
%a、%A读入一个浮点值(仅 C99 有效)。float *
%c单个字符:读取下一个字符。如果指定了一个不为 1 的宽度 width,函数会读取 width 个字符,并通过参数传递,把它们存储在数组中连续位置。在末尾不会追加空字符。char *
%d十进制整数:数字前面的 + 或 - 号是可选的。int *
%e、%E、%f、%F、%g、%G浮点数:包含了一个小数点、一个可选的前置符号 + 或 -、一个可选的后置字符 e 或 E,以及一个十进制数字。两个有效的实例 -732.103 和 7.12e4float *
%i读入十进制,八进制,十六进制整数 。int *
%o八进制整数。int *
%s字符串。这将读取连续字符,直到遇到一个空格字符(空格字符可以是空白、换行和制表符)。char *
%u无符号的十进制整数。unsigned int *
%x、%X十六进制整数。int *
%p读入一个指针 。
%[]扫描字符集合 。
%%读 % 符号。

我们可以看到大多参数类型都是指针,也就是说,参数要求的就是一个char*的指针了,代表的肯定是地址。 

二,截断与整型提升

所谓截断,就是int类型你用char来储存时,由于char是一个字节,而int是int类型,舍弃掉高字节,只保留低字节的数据就是截断。

所谓整型提升,就是char类型你用int类型来储存时,由于高字节缺少数据,就会在高字节中自动补充数据,无符号数直接补0,有符号数补充符号数的0或1(二进制)

整型常量97的值自然是他本身,对于整型字符常量的值'97','9m!'等,请参考从二进制和内存的底层来探究同一数据在不同类型下的调用-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/qiulingfeng123/article/details/135407395?spm=1001.2014.3001.5502

第一发的,原来想删的,想了一下,留个纪念。

1.int a = 97;最基础的,打印结果大家应该都能理解

2.int a = ’97‘;

’97‘为int类型时,7对应的ASCII值为55,9对应的是57,即%d=14647,%c时表达的是字符,一个字符一个字节,取值是256,由于1个字节存储不了那么多信息,计算机只能保留刚读写的7,’7‘对应的ASCII值是55,又对应回来,自然打印的就是字符7了

’97‘对应的值为55+57*256=14647,相当于是256进制的运算,再比如'6f!'的值为33+102*256+54*256*256=3565089,由于一个字节是-128~127,256个数字,故进制为256

3.char a = 97;97为char类型时,数字仍然是97,字符为’a‘,与int一致。但其实又不一样,如当char a = 14674时,表示将’97‘赋值给char a,由上截断,%d=55,%c=7

4.char a = ’97‘,与3.char a = 14674,同理

5与6以及综上所述:int,char与%d,%c,类似,将数字或字符传给他时,int——%d——数字,char——%c——字符,

三.左值右值问题

1.左值

左值是一个表示数据的表达式,比如:变量名、解引用的指针变量。一般地,我们可以获取它的地址对它赋值,但被 const 修饰后的左值,不能给它赋值,但是仍然可以取它的地址。

总体而言,可以取地址的对象就是左值。初学者理解为变量即可。

2.右值

右值也是一个表示数据的表达式,比如:字面常量、表达式返回值,传值返回函数的返回值(是传值返回,而非传引用返回)右值不能出现在赋值符号的左边且不能取地址

总体而言,不可以取地址的对象就是右值。初学者就理解成表达式就行了。

好了,以上就是我分享的有关c语言学习中可能会遇到的困惑,希望能够帮助到大家。谢谢 

  • 37
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
### 回答1: Hello World网页制作是HTML编程的入门级别。以下是制作Hello World网页的步骤: 1. 打开文本编辑器,如记事本或Sublime Text等。 2. 在文本编辑器中输入以下代码: <!DOCTYPE html> <html> <head> <title>Hello World</title> </head> <body> <h1>Hello World!</h1> </body> </html> 3. 保存文件,文件名为“helloworld.html”,确保文件类型为“所有文件”。 4. 在浏览器中打开“helloworld.html”文件,即可看到“Hello World!”的标题。 这个简单的网页由HTML标记组成,其中包括文档类型声明、HTML标签、标题标签和正文标签。HTML标记告诉浏览器如何显示网 ### 回答2: HTML是超文本标记语言的英文缩写,是用来制作网页的一门标记语言。在网页制作中,HTML主要用来编写网页的内容和结构,决定网页中各个元素的排列和位置。 制作HTML网页的第一步,是编写一个简单的“hello world”网页。这个网页的基本结构如下所示: <!DOCTYPE html> <html> <head> <title>我的第一个网页</title> </head> <body> <h1>Hello World!</h1> </body> </html> 该网页有三个部分组成: 1.头部(head):用于描述文档的基本属性,包括文档类型声明、字符编码、文档title等。文档title在浏览器的标题栏中显示。 2.主体(body):用于展示文档内容。在body中,可以添加文本、图片、链接、表格等各种元素。 3.文本(text):在该网页中,<h1>标签表示网页的标题,这里的标题是“Hello World!”。 当我们在编辑器中输入以上代码,保存为一个html文件,使用浏览器打开它,就可以看到“Hello World!”这个简单的网页了。 尽管这只是一个简单的网页,但它展示了HTML的基本属性,如何在HTML中描述文档的结构和展示内容,为之后学习其他更加复杂的HTML网页制作奠定了基础。 ### 回答3: HTML 是一种标记语言,是网页制作的基础。在制作网页时,首先需要创建一个 HTML 文件,并在文件中编写 HTML 代码。最简单的 HTML 代码就是 Hello World 网页。下面我来介绍一下如何制作这个网页。 首先,我们需要创建一个 HTML 文件。可以使用文本编辑器(如 Notepad++、Sublime Text 等)来创建 HTML 文件。以 Notepad++ 为例,创建一个新文本文件,将文件后缀名改为 .html,这样我们就创建了一个 HTML 文件。接下来,我们需要在 HTML 文件中编写代码。 HTML 代码由标签和内容组成。标签用来标记 HTML 文档中的不同部分,内容则是标签所包含的文本、图片、链接等等。以 Hello World 网页为例,我们可以编写以下代码: ``` <!DOCTYPE html> <!-- 文档类型声明 --> <html> <!-- html 根标签 --> <head> <!-- head 标签 --> <title>Hello World</title> <!-- title 标签,设置网页标题 --> </head> <body> <!-- body 标签,设置网页的 body 部分 --> <h1>Hello World</h1> <!-- h1 标题标签,设置网页主标题 --> <p>This is my first HTML web page.</p> <!-- p 标签,设置网页主要内容 --> </body> </html> ``` 上述代码中,第一行 ``<!DOCTYPE html>`` 是文档类型声明,告诉浏览器这是一个 HTML5 文档。接下来的 ``<html>`` 标签是 HTML 文档的根标签,所有其他标签都嵌套在它内部。``<head>`` 标签用于设置网页的头部内容,例如网页标题、样式表等等。标签内部的 ``<title>`` 标签用于设置网页标题。``<body>`` 标签用于设置网页的 body 部分,即网页中显示的内容。``<h1>`` 标签用于设置网页主标题,“Hello World” 就是我们的主标题。``<p>`` 标签是段落标签,用于设置网页主要内容。 将上述代码保存为 .html 后,我们就可以用浏览器打开它,看到我们刚刚编写的 Hello World 网页了。这是一个非常简单的网页,但它包含了 HTML 的基础标签和使用方法,对于初学者来说是非常有帮助的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值