c语言把char转换成int

c语言把char转换成int,第1张

#include <stdlibh>

int atoi(const char nptr);

long atol(const char nptr);

long long atoll(const char nptr);

long long atoq(const char nptr);

扩展资料:

反之int 转 char

在stdlibh中有个函数itoa()

itoa(i,num,10);

i     需要转换成字符的数字

num   转换后保存字符的变量

10    转换数字的基数(进制)10就是说按照10进制转换数字。

还可以是2,8,16等等你喜欢的进制类型

原形:char itoa(int value, char string, int radix);
实例:

#include "stdlibh" #include "stdioh" main()

{

int i=1234;

char s[5];

itoa(i,s,10);

printf("%s",s);

getchar();

}

int
a,b;
//keil
c里的int,也就是16位。
a=0000;
b=0x1234;
a=(char)(b);
int
a,b;
这句的功能是 *** 作系统为变量a,b分别分配一块空闲的存储空间。以后使用a,b将相当于访问各自所对应的存储空间。 
a
=
0000;b
=
Ox1234;
这句的功能是把0000放到变量a所对应的存储空间,把0x1234放到变量b所对应的存储空间。
重点是下面这句a
=
(char)(b)
它的功能相当于修改变量a的值。具体是这样 *** 作的:
从b所对应的存储空间中取出b的值即0x1234,然后把他转换成char类型,再然后将转换后的结果放到变量a所对应的存储空间,即覆盖掉原来的0000。
这个转换后的结果又是多少呢,是这样算的通常在C中int类型占4个字节
而char类型占1个字节如果把一个int类型的数据以char类型输出,那么,编译器会自动丢弃int类型的前3个字节的内容。对应本题int类型的数据b是0X1234,为十六进制,在计算机中是这样存储的:
0000
0000
0000
0000
0001
0010
0011
0100
共4个字节。转换成char类型后,前3个字节丢弃,即结果是
0011
0100
共1个字节,对应的十进制是52 
当语句a
=
(char)(b)执行完后,这1个字节的值也就是52就放到了变量a所对应的存储空间,而不是原来的0000了。
所以,整个过程并没有改变变量a和b的数据类型,原来是int类型现在还是int型,程序只是修改了变量a的值,连b的值都没有修改,因为修改a的值时只是从b所对应的存储空间里把b的值取出来用一用,用的结果是修改成char类型,但他把修改后的结果放到a所对应的存储空间了,并没有放到b所对应的存储空间,所以原来b所对应的值没有被覆盖,原来是0X1234,现在还是0X1234。

从 char 到 int 属于“从短到长”的转换,而从 int 到 char 则为“从长到短”的转换。
短到长时,系统会自动提升,会将1个字节的char类型数据扩充到4个字节(32位系统),对于无符号类型来说,只将int的最低字节复制为char的值,其余三个字节都为0。
长到短时,只将int的最低字节的内容复制到char类型的变量,三个高位字节被忽略,这在编译时会给出警告,但通过强制类型转换则可以避免警告出现,如 char ch = (char)intvar。

直接显式赋值即可,char->int 属于扩宽转换,无需显式强制转换。

char ch='A';
int ascii=ch; // 直接赋值,无需显式强制转换。
Systemoutprintln("ascii="+ascii); // print 65

c#这样把char转换成int:

例如:

int a=ConvertToInt32(char),这个是最普通的转换,即把字符串(字符)类型的数字转换为int类型;


char a = 'b;


int b = (int)a;


这样得到的结果就是98,是字符b(小写)在ascii码中对应的值。

1、C#

C#是微软公司发布的一种面向对象的、运行于NET Framework之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成果。

C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司 NET windows网络框架的主角。

C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB简单的可视化 *** 作和C++的高运行效率,以其强大的 *** 作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为NET开发的首选语言。

C#是面向对象的编程语言。它使得程序员可以快速地编写各种基于MICROSOFT NET平台的应用程序,MICROSOFT NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。

C#使得C++程序员可以高效的开发程序,且因可调用由 C/C++ 编写的本机原生函数,因此绝不损失C/C++原有的强大的功能。因为这种继承关系,C#与C/C++具有极大的相似性,熟悉类似语言的开发者可以很快的转向C#。

2、设计目标

C#旨在设计成为一种"简单、现代、通用",以及面向对象的程序设计语言,此种语言的实现,应提供对于以下软件工程要素的支持:强类型检查、数组维度检查、未初始化的变量引用检测、自动垃圾收集(Garbage Collection,指一种自动内存释放技术)。软件必须做到强大、持久,并具有较强的编程生产力。此种语言为在分布式环境中的开发提供适用的组件开发应用。

为使程序员容易迁移到这种语言,源代码的可移植性十分重要,尤其是对于那些已熟悉C和C++的程序员而言。对国际化的支持非常重要。C#适合为独立和嵌入式的系统编写程序,从使用复杂 *** 作系统的大型系统到特定应用的小型系统均适用。

强类型转换可以,
是对ASCII的 *** 作
另外,
若char
ch[10]="10
dogs";
有下列转换方法
int
a
=_ttoi(ch);
转换后,a=10
若char
num[3]={'1','2','3'};
即char
num="123",
用上面转换可将123作为int型输出
也可int
i=0;int
a[3];
for(i=0;i<3;i++)
a[i]=_ttoi(num[i]);

C语言中char类型本身就是整型类数据变量,可以直接赋值给int变量
char占一个字节内存空间,可表示的有符号数为-128~127,无符号数0~255
C语言中字符是按其ascii值进行存储的,如,字母'a',其实际存储在内存中的数据为97,只是在输出时,因格式串的不同,表现出来的形式不同:
printf("%c", 'a' ); //按字符输出,显示a
printf("%d", 'a'); //按整数输出,显示97
printf("%x", 'a'); //按16进制输出,显示61
int占四字节内存空间,char赋值给int,系统自动进行高位补符号位,如,正数前补0,负数前补1

char a='1';
char base='0';
int i = (int)a - (int)base;
//可以简单点写一个宏
#define ATOI(X) ( (X) - 30)

原理就是字符型实际是存储的整数,具体数值可查ASCII表,而数字0-9的ASCII是相邻的,数字字符通过减去基础的'0'的ASCII码值,就能得到对应的字符代表的实际数字,然后赋值给其他数字型变量即可。

下面是ASCII表


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12936219.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存