C语言中的一些小知识点

一、逗号表达式

说明

在C语言中,逗号表达式是一种特殊的表达式,它允许你将多个表达式串联起来,并且会按照从左到右的顺序依次计算每个表达式,但整个表达式的值是最后一个表达式的值。

一般形式如下:

expression1, expression2, expression3, ..., expressionN;

其中,“expression1, expression2, ..., expressionN“是任意数量的表达式,它们将按照顺序被计算。但是,只有最后一个表达式 “expressionN” 的值会被用作整个逗号表达式的值。

例子

#include <stdio.h>int main() {int a = 5, b = 10, c;c = (a++, b++, a + b); // 逗号表达式printf("a = %d, b = %d, c = %d\n", a, b, c);return 0;
}

在这个例子中,逗号表达式 `(a++, b++, a + b)` 计算的顺序如下:

1. “a++”被计算,”a“ 的值增加1,但表达式的值是 `a` 增加前的值,即5。
2. ”b++“ 被计算,“b” 的值增加1,但表达式的值是 ”b“ 增加前的值,即10。
3. “a + b”被计算,此时 `a` 和 `b` 都已增加1,所以表达式的值是6 + 11 = 17。

因此,最终 `c` 的值是17。

二、用强制类型转换将char转换成double可以吗?

例子

#include <stdio.h>int main() {char c = '3'; // 假设我们有一个字符 '3'double d;// 将字符 '3' 转换为数字 3.0d = (double)c - (double)'0';printf("The character '%c' as a double is %f\n", c, d);return 0;
}

在这个例子中,我们首先定义了一个 char 类型的变量 c 并赋值为 '3'。然后,我们通过强制类型转换将 c 转换为 double 类型,并且减去字符 '0'double 类型值。这是因为在ASCII码表中,数字字符 '0''9' 是连续的,所以 '3' 的ASCII码值减去 '0' 的ASCII码值就得到了数字3。

三、''和'\61'到底哪个是字符常量

(1)在C语言中,字符常量是用单引号(')括起来的单个字符。字符常量在C语言中通常用于表示单个字符,它们在内存中存储为该字符的ASCII码值。以下是一些关于字符常量的要点:

1. **表示方法**:字符常量必须用单引号括起来,例如 `'A'`、`'B'`、`'5'`、`';'` 等。

2. **数据类型**:字符常量在C语言中是 `char` 类型。

3. **ASCII值**:字符常量在内存中存储的是对应的ASCII码值。例如,字符 `'A'` 的ASCII码值是65。

4. **转义序列**:在单引号中,也可以使用特定的转义序列来表示特定的字符,如换行符(`\n`)、制表符(`\t`)、单引号(`\'`)、反斜杠(`\\`)等。

5. **字符字面量与字符串字面量的区别**:字符字面量是单个字符,而字符串字面量是由双引号括起来的字符序列,如 `"Hello"`。

6. **字符常量的范围**:在C语言中,字符常量的范围是从0到255(对于标准ASCII码),这取决于所使用的字符编码。

7. **字符常量的使用**:字符常量可以用于数组、变量赋值、条件判断等。

下面是一个使用字符常量的简单示例:

#include <stdio.h>int main() {char letter = 'A'; // 定义一个字符常量并赋值char newline = '\n'; // 定义一个换行符字符常量char backslash = '\\'; // 定义一个反斜杠字符常量printf("%c%cThis is on a new line.%c", letter, newline, backslash);return 0;
}

在这个例子中,我们定义了三个字符常量:`letter` 存储字符 `'A'`,`newline` 存储换行符,`backslash` 存储反斜杠字符。然后我们使用 `printf` 函数打印它们。输出将会是:

A
This is on a new line.\

请注意,由于反斜杠是转义字符,所以在打印时它后面紧跟的字符会被解释为转义序列的一部分,除非它自身被转义(如 `\\` 表示字面量的反斜杠)。

(2)在C语言中,`\61` 是一个八进制的转义序列,它代表ASCII码值为 61 的字符。八进制转义序列以反斜杠(`\`)开始,后跟最多三个八进制数字(0-7)。在这个例子中,`61` 是一个八进制数,它等价于十进制数 97。

因此,`\61` 表示的字符是小写字母 'a',因为 'a' 的ASCII码值是 97。

这里是一个简单的示例,展示如何使用这个转义序列:
 

#include <stdio.h>int main() {char ch = '\61'; // 使用八进制转义序列定义字符 'a'printf("The character is: %c\n", ch);return 0;
}

当你运行这个程序时,它会输出:

The character is: a

这证明了 `\61` 确实表示小写字母 'a'。

四、判断"abc\045D\\\0";  "0def\081";  "jkl\\\09A8";  "x\nyz\6"; 的长度

下面我们通过用strlen()函数写一段代码,来解决这个问题。

#include <stdio.h>
#include <string.h>int main() {char str1[] = "abc\045D\\\0";char str2[] = "0def\081";char str3[] = "jkl\\\09A8";char str4[] = "x\nyz\6";printf("Length of \"abc\\045D\\\\\\0\" is %lu\n", strlen(str1));printf("Length of \"0def\\081\" is %lu\n", strlen(str2));printf("Length of \"jkl\\\\\\09A8\" is %lu\n", strlen(str3));printf("Length of \"x\\nyz\\6\" is %lu\n", strlen(str4));return 0;
}

在C语言中,"abc\045D\\\0";可以分解成下面这些字符'a'、'b'、'c'、'\045'、'D'、'\'、'\0',其中'\0'在计算字符串长度的时候不计算在内。

 在C语言中,"0def\081";可以分解成下面这些字符'0'、'd'、'e'、'f'、'\0',你可能会问为啥不是'\081',在上面的讲解中我们都知道八进制转义序列以反斜杠(`\`)开始,后跟最多三个八进制数字(0-7)。

在C语言中,"jkl\\\09A8"; 可以分解成下面这些字符'j'、'k'、'l'、'\'、'\0'。

在C语言中,"x\nyz\6";可以分解成下面这些字符'x'、'\n'、'y'、'z'、'\6'。

所以以上代码的输出结果是:

Length of "abc\045D\\\0" is 6
Length of "0def\081" is 4
Length of "jkl\\\09A8" is 4
Length of "x\nyz\6" is 5
请按任意键继续. . .

五、有以下程序描述 double a=22;int i=0; a=a++,i++;a的值是多少?

a=a++,i++;和 a=(a++,i++);有区别吗?

下面是a=a++,i++;的程序

#include <stdio.h>int main() {double a = 22;int i = 0;// 执行逗号表达式a = a++, i++;// 打印结果printf("a = %f\n", a);printf("i = %d\n", i);return 0;
}

运行结果如下: 

a = 23.000000
i = 1
请按任意键继续. . .

下面是a=(a++,i++);的程序 

#include <stdio.h>int main() {double a = 22;int i = 0;// 执行逗号表达式a = (a++, i++);// 打印结果printf("a = %f\n", a);printf("i = %d\n", i);return 0;
}

运行结果如下:  

a = 0.000000
i = 1
请按任意键继续. . .

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通过logstash同步elasticsearch数据

1 概述 logstash是一个对数据进行抽取、转换、输出的工具&#xff0c;能对接多种数据源和目标数据。本文介绍通过它来同步elasticsearch的数据。 2 环境 实验仅仅需要一台logstash机器和两台elasticsearch机器&#xff08;elasticsearch v7.1.0&#xff09;。本文用docker来模…

css 样式简单学习(一)

目录 1. css 介绍 1.1 css 样式 1.2 css代码风格 1.2.1 书写格式 1.2.2 样式大小写​编辑 1.2.3 空格规范 2. 基础选择器 2.1 选择器的作用​编辑 2.2 选择器的分类 2.3 基础选择器 2.3.1 标签选择器​编辑 2.3.2 类选择器​编辑 2.3.3 类选择器-多类名​编辑 2.…

简单题88. 合并两个有序数组 (Python)20240920

问题描述&#xff1a; python&#xff1a; class Solution(object):def merge(self, nums1, m, nums2, n):""":type nums1: List[int]:type m: int:type nums2: List[int]:type n: int:rtype: None Do not return anything, modify nums1 in-place instead.&qu…

选址模型 | 基于混沌模拟退火粒子群优化算法的电动汽车充电站选址与定容(Matlab)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 基于混沌模拟退火粒子群优化算法的电动汽车充电站选址与定容&#xff08;Matlab&#xff09; 问题建模&#xff1a;首先&#xff0c;需要将电动汽车充电站选址与定容问题进行数学建模&#xff0c;确定目标函数和约束…

React18入门教程

React介绍 React由Meta公司开发&#xff0c;是一个用于 构建Web和原生交互界面的库 React的优势 相较于传统基于DOM开发的优势 组件化的开发方式 不错的性能 相较于其它前端框架的优势 丰富的生态 跨平台支持 React的市场情况 全球最流行&#xff0c;大厂必备 开发环境…

【Verilog学习日常】—牛客网刷题—Verilog快速入门—VL24

边沿检测 有一个缓慢变化的1bit信号a&#xff0c;编写一个程序检测a信号的上升沿给出指示信号rise&#xff0c;当a信号出现下降沿时给出指示信号down。 注&#xff1a;rise,down应为单脉冲信号&#xff0c;在相应边沿出现时的下一个时钟为高&#xff0c;之后恢复到0&#xff0…

密集行人数据集 CrowdHumanvoc和yolo两种格式,yolo可以直接使用train val test已经划分好有yolov8训练200轮模型

密集行人数据集 CrowdHuman voc和yolo两种格式&#xff0c;yolo可以直接使用 train val test已经划分好 有yolov8训练200轮模型。 CrowdHuman 密集行人检测数据集 数据集描述 CrowdHuman数据集是一个专为密集行人检测设计的数据集&#xff0c;旨在解决行人密集场景下的检测挑…

关于实时数仓的几点技术分享

一、实时数仓建设背景 业务需求的变化&#xff1a;随着互联网和移动互联网的快速发展&#xff0c;企业的业务需求变得越来越复杂和多样化&#xff0c;对数据处理的速度和质量要求也越来越高。传统的T1数据处理模式已经无法满足企业的需求&#xff0c;实时数据处理成为了一种必…

什么是 IP 地址信誉?5 种改进方法

IP 地址声誉是营销中广泛使用的概念。它衡量 IP 地址的质量&#xff0c;这意味着您的电子邮件进入垃圾邮件或被完全阻止发送的可能性。 由于每个人都使用专用电子邮件提供商而不是直接通过 IP 地址进行通信&#xff0c;因此&#xff0c;这些服务可以跟踪和衡量发件人的行为质量…

表情包创作、取图小程序端(带流量主)

小程序永久免费&#xff0c;无任何广告&#xff0c;无任何违规功能&#xff01; 小程序具备以下功能有&#xff1a; 支持创作者加入 支持在线制作表情包 使用说明 表情包必备工具&#xff0c;一款专属于你的制作表情包工具&#xff0c;斗图必备神器

Linux下进程通信与FIFO操作详解

Linux下进程通信与FIFO操作详解 一、命名管道(FIFO)概述1.1 命名管道的特点1.2 创建命名管道二、命名管道的操作2.1 打开命名管道2.2 读写命名管道2.3 关闭命名管道三、命名管道的使用实例3.1 命名管道的创建和通信过程3.1.1 发送方(writer)3.1.2 接收方(reader)3.2 运行…

python 爬虫 selenium 笔记

todo 阅读并熟悉 Xpath, 这个与 Selenium 密切相关、 selenium selenium 加入无图模式&#xff0c;速度快很多。 from selenium import webdriver from selenium.webdriver.chrome.options import Options# selenium 无图模式&#xff0c;速度快很多。 option Options() o…

Qt/C++事件过滤器与控件响应重写的使用、场景的不同

在Qt/C中&#xff0c;事件过滤器和控件响应重写是两种用于捕获和处理鼠标、键盘等事件的机制&#xff0c;它们的用途和使用场景不同&#xff0c;各有优劣。下面详细介绍它们的区别、各自适用的场景、以及混合使用的场景和注意事项。 1. 事件过滤器&#xff08;Event Filter&…

全能OCR神器GOT-OCR2.0整合包部署教程

项目地址:https://github.com/Ucas-HaoranWei/GOT-OCR2.0 整合包下载&#xff1a;https://pan.quark.cn/s/3757da820e65 显卡建议使用RTX 30以上的 ①先安装NVIDIA显卡驱动&#xff1a; https://www.nvidia.cn/drivers/lookup/ 输入显卡型号搜索就行 ②安装CUDA 工具包 cu…

Django 聚合查询

文章目录 一、聚合查询二、使用步骤1.准备工作2.具体使用3.分组查询&#xff08;annotate&#xff09;1.定义2.使用3.具体案例 4.F() 查询1.定义2.使用 5.Q() 查询1.定义2.查询 一、聚合查询 使用聚合查询前要先从 django.db.models 引入 Avg、Max、Min、Count、Sum&#xff0…

力扣 2529.正整数和负整数的最大计数

文章目录 题目介绍解法 题目介绍 解法 采用红蓝染色体法&#xff0c;具体介绍参考 红蓝染色体法 通过红蓝染色体法可以找到第一个大于大于target的位置&#xff0c;使所以本题可以找第一个大于0的位置&#xff0c;即负整数的个数&#xff1b;数组长度 - 第一个大于1的位置即正…

【踩坑】装了显卡,如何让显示器从主板和显卡HDMI都输出

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 背景介绍 装了显卡后&#xff0c;开机默认是从显卡的HDMI输出&#xff0c;但这很不方便。如何让视频仍然从主板输出&#xff1f;或者说让显卡HDMI和主板…

切线空间:unity中shader切线空间,切线矩阵,TBN矩阵 ,法线贴图深度剖析

unity中shader切线空间 看了网上各种解释&#xff0c;各种推理。直接脑袋大。感觉复杂的高大上。当深入了解后&#xff0c;才发是各种扯淡。 一切从模型法向量开始 在shader中&#xff0c;大部分的光照计算都是与法向量有关。通过法向量和其他向量能计算出模型在光线照射下的…

MyBatis-Plus分页查询、分组查询

目录 准备工作1. 实体类2. Mapper类3. 分页插件4. 数据 分页查询1. 使用条件构造器2. 使用自定义sql 分组查询1. 分组结果类2. 自定义sql3. 测试类 准备工作 1. 实体类 对地址字段address使用字段类型转换器&#xff0c;将List转为字符串数组保存在数据库中 package com.exa…

【CSS Tricks】一种基于AV1视频格式的现代图像格式-AVIF

引言 AV1图像文件格式&#xff08;英语&#xff1a;AV1 Image File Format&#xff0c;简称AVIF&#xff09;是由开放媒体联盟&#xff08;AOM&#xff09;开发&#xff0c;采用AV1视讯编码技术压缩图像的一种图像文件格式&#xff0c;能用来储存一般的图像和动态图像。AVIF和苹…