2021年五月九日 c语言学习日志

2023-10-20 02:20

本文主要是介绍2021年五月九日 c语言学习日志,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

教材中一个地方我不明白 :c语言4个独立的ASCⅡ码存储到一个32位的整型变量中。

int定义一个变量,用这个变量存储一个字符时,输出的是字符对应的ASCⅡ码,但是用这个变量存储字符串时,出来的数字我看不懂。

下面附上

代码一

#include <stdio.h>int main( void ){char grade =  'A';char level = 'FATE';int x = 'FATE';char ch = 97;printf(" grade = %c level = %c  ch=%c x = %d\n ", grade ,level ,ch, x);return 0;
}

和运行结果

 

 

更新:::

经过一番查找,在好友的帮助下找到了这样一个回答\

字符串"AB"可以用ascII码表示吗? 如何表示_百度知道 (baidu.com)

 

代码二为

#include<stdio.h>
#include<string.h>
int main(void)
{
union bt
{int k;char c[3];
}a;a.k=0;strcpy(a.c,"AB");printf("%o,%o\n",a.c[0],a.c[1]);printf("%d\n",a.k);a.k=2;printf("%o,%o,%o\n",a.c[0],a.c[1],a.c[2]);printf("%d\n",a.k);   return 0;
}

 下面是我修改过的版本,为了更直观的感受联合体。这里还有一个问题,在代码第二部分,设置k=10及其大于10的数时,a.c[0]输出的是k+2,小于10时,a.c[0]输出的是原值

 

#include<stdio.h>
#include<string.h>
int main(void)
{
union bt
{int k;char c[3];
}a;a.k=0;strcpy(a.c,"AB");printf("%o,%o\n",a.c[0],a.c[1]);printf("%c,%c\n",a.c[0],a.c[1]);printf("%d\n",a.k);a.k=10;int i;printf("请输入两个字母");for(i=1;i<3;i++){scanf("%c",&a.c[i]);getchar();}printf("%o,%o,%o\n",a.c[0],a.c[1],a.c[2]);printf("%d\n",a.k);   return 0;
}

up查找了了大小端、union、字符串和字符数组,的相关知识,但是还是没有对所有问题得出一个肯定的答案,只能猜想一下答案:

首先是‘AB’的ascⅡ码是怎么计算的:反斜杠 8 进制 ASCII 值表示: "\101\102",八进制的101和102 可写成16进制 41,42。
printf("%d\n",0x4241);,就是 十进制 16961;而printf("%d\n",0x4142);,就是 十进制 16706

然后,

对于代码一中的:int x=‘AB’,输出x时是根据字符串输出的,所以的是正序的ascⅡ码16706;

而对于代码二,在union中由于共享内存,a.k的值被后面的  strcpy(a.c,"AB");语句更改,所以输出的也是‘AB’的ascⅡ码,但是这里存在一个大小端的问题(这个我还没搞明白为什么前后两个输出的不一致),导致AB逆序输出ascⅡ码16961。

 

 

 

这篇关于2021年五月九日 c语言学习日志的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/243943

相关文章

Python中4大日志记录库比较的终极PK

《Python中4大日志记录库比较的终极PK》日志记录框架是一种工具,可帮助您标准化应用程序中的日志记录过程,:本文主要介绍Python中4大日志记录库比较的相关资料,文中通过代码介绍的非常详细,... 目录一、logging库1、优点2、缺点二、LogAid库三、Loguru库四、Structlogphp

C语言逗号运算符和逗号表达式的使用小结

《C语言逗号运算符和逗号表达式的使用小结》本文详细介绍了C语言中的逗号运算符和逗号表达式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习... 在C语言中逗号“,”也是一种运算符,称为逗号运算符。 其功能是把两个表达式连接其一般形式为:表达

Go语言实现桥接模式

《Go语言实现桥接模式》桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化,本文就来介绍一下了Go语言实现桥接模式,感兴趣的可以了解一下... 目录简介核心概念为什么使用桥接模式?应用场景案例分析步骤一:定义实现接口步骤二:创建具体实现类步骤三:定义抽象类步骤四:创建扩展抽象类步

GO语言实现串口简单通讯

《GO语言实现串口简单通讯》本文分享了使用Go语言进行串口通讯的实践过程,详细介绍了串口配置、数据发送与接收的代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录背景串口通讯代码代码块分解解析完整代码运行结果背景最近再学习 go 语言,在某宝用5块钱买了个

JAVA Log 日志级别和使用配置示例

《JAVALog日志级别和使用配置示例》本文介绍了Java中主流的日志框架,包括Logback和Log4j2,并详细解释了日志级别及其使用场景,同时,还提供了配置示例和使用技巧,如正确的日志记录方... 目录一、主流日志框架1. Logback (推荐)2. Log4j23. SLF4J + Logback

C++简单日志系统实现代码示例

《C++简单日志系统实现代码示例》日志系统是成熟软件中的一个重要组成部分,其记录软件的使用和运行行为,方便事后进行故障分析、数据统计等,:本文主要介绍C++简单日志系统实现的相关资料,文中通过代码... 目录前言Util.hppLevel.hppLogMsg.hppFormat.hppSink.hppBuf

GO语言zap日志库理解和使用方法示例

《GO语言zap日志库理解和使用方法示例》Zap是一个高性能、结构化日志库,专为Go语言设计,它由Uber开源,并且在Go社区中非常受欢迎,:本文主要介绍GO语言zap日志库理解和使用方法的相关资... 目录1. zap日志库介绍2.安装zap库3.配置日志记录器3.1 Logger3.2 Sugared

Go语言中如何进行数据库查询操作

《Go语言中如何进行数据库查询操作》在Go语言中,与数据库交互通常通过使用数据库驱动来实现,Go语言支持多种数据库,如MySQL、PostgreSQL、SQLite等,每种数据库都有其对应的官方或第三... 查询函数QueryRow和Query详细对比特性QueryRowQuery返回值数量1个:*sql

GO语言中gox交叉编译的实现

《GO语言中gox交叉编译的实现》本文主要介绍了GO语言中gox交叉编译的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、安装二、使用三、遇到的问题1、开启CGO2、修改环境变量最近在工作中使用GO语言进行编码开发,因

tomcat日志中文乱码问题及解决方案

《tomcat日志中文乱码问题及解决方案》文章主要介绍了在使用Tomcat时遇到的乱码问题及其解决方法,页面输出乱码可能由于server.xml配置、HTML标签、编程输出编码不一致引起,解决方法包括... 目录一、页面输出乱码1.server.XML配置未注明编码格式2.catalina.bawww.cp