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

相关文章

Go语言中nil判断的注意事项(最新推荐)

《Go语言中nil判断的注意事项(最新推荐)》本文给大家介绍Go语言中nil判断的注意事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.接口变量的特殊行为2.nil的合法类型3.nil值的实用行为4.自定义类型与nil5.反射判断nil6.函数返回的

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

MySQL 打开binlog日志的方法及注意事项

《MySQL打开binlog日志的方法及注意事项》本文给大家介绍MySQL打开binlog日志的方法及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录一、默认状态二、如何检查 binlog 状态三、如何开启 binlog3.1 临时开启(重启后失效)

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

Go语言如何判断两张图片的相似度

《Go语言如何判断两张图片的相似度》这篇文章主要为大家详细介绍了Go语言如何中实现判断两张图片的相似度的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 在介绍技术细节前,我们先来看看图片对比在哪些场景下可以用得到:图片去重:自动删除重复图片,为存储空间"瘦身"。想象你是一个

Go语言中Recover机制的使用

《Go语言中Recover机制的使用》Go语言的recover机制通过defer函数捕获panic,实现异常恢复与程序稳定性,具有一定的参考价值,感兴趣的可以了解一下... 目录引言Recover 的基本概念基本代码示例简单的 Recover 示例嵌套函数中的 Recover项目场景中的应用Web 服务器中

Golang 日志处理和正则处理的操作方法

《Golang日志处理和正则处理的操作方法》:本文主要介绍Golang日志处理和正则处理的操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录1、logx日志处理1.1、logx简介1.2、日志初始化与配置1.3、常用方法1.4、配合defer