一、C语言编程字符型?
char型对应数值是ASCII码,是有符号数。
而你代码中ch+32结果是129(97+32)。
第一参数按%c输出是?,因为127往后是扩展编码,不用做显示。
第二参数按%d输出,你前面赋值将129赋值给了char型的变量ch。
129是无符号数,赋值给ch后,ch的二进制码是1000,0001(129对应的无符号二进制)。
但ch作为字符型,是有符号数,所以最高位被解读成负号。这就变成了一个负数。
负数在计算机中是按照补码保存的。
因此,打印时要将补码转成原码:
1000,0001(补码)=>1000,0000(反码)=>1111,1111(原码)。
有符号二进制1111,1111转成10进制打印,就是-127。
二、C语言编程输入字符输出字符的ascll码
unsigned char HexToChar(unsigned char bChar){
if((bChar>=0x30)&&(bChar<=0x39))
bChar -= 0x30;
else if((bChar>=0x41)&&(bChar<=0x46))//大写字母
bChar -= 0x37;
else if((bChar>=0x61)&&(bChar<=0x66))//小写字母
bChar -= 0x57;
else bChar = 0xff;
return “The ASCII of ch”&& bChar。
C语言常用转义字符
字符常量中使用单引号和反斜杠以及字符常量中使用双引号和反斜杠时,都必须使用转义字符表示,即在这些字符前加上反斜杠。
在C程序中使用转义字符\ d d d或者\ x h h可以方便灵活地表示任意字符。\ d d d为斜杠后面跟三位八进制数,该三位八进制数的值即为对应的八进制A S C I I码值。\ x后面跟两位十六进制数,该两位十六进制数为对应字符的十六进制A S C I I码值。
使用转义字符时需要注意以下问题:
转义字符中只能使用小写字母,每个转义字符只能看作一个字符。
\v垂直制表和\f换页符对屏幕没有任何影响,但会影响打印机执行响应操作。
在C程序中,使用不可打印字符时,通常用转义字符表示。
总之:
\v垂直制表和\f换页符对屏幕没有任何影响,但会影响打印机执行响应操作。
\n其实应该叫回车换行。换行只是换一行,不改变光标的横坐标;回车只是回到行首,不改变光标的纵坐标。
\t光标向前移动四格或八格,可以在编译器里设置。
\'在字符里(即单引号里)使用。在字符串里(即双引号里)不需要,只要用'即可。
\?其实不必要。只要用?就可以了。
C语言的字符类型是以整数的形式存储在内存中的,这个整数就是这个字符的ASCII码,所以只需要将字符以整数的形式输出即可。
代码如下:
#include <stdio.h>
int main()
{
char c;
c = getchar();
printf(%d\n, c);
return 0;
}
以字符型char输入字符,输出的时候使用整形输出格式%d输出就可以得到字符相应的ASCII码了
#include <stdio.h>
//
int main(int argc, char* argv[])
{
char a;
while(a=getchar())
{
if(a=='\n')
continue;//ignore the enter
printf(%d\n,a);
}
}
三、编程中用什么表示一行字符
String。
很多高级语言像java、C#等就有字符串类型,有个String来表示字符串,用法和int这些很像,可以Strings1=linux,来定义字符串类型的变量。
C# 里面用 String 来表示不限定长度的字符串。
使用 Char[99] 来表示长度为 99 的字符串。
如果限定为一行,通过
String.Split(new string[] { \r\n }, StringSplitOptions.None)[0];
可以得到第一行内容。