C语言的一个基础问题:printf("%c,'\41'); 为什么输出的是 "!" ,感叹号?我看到8进制,41代表感叹号

作者&投稿:蓬宋 (若有异议请与网页底部的电邮联系)
printf("c%\n",'\41') 为什么打印出的是叹号?8进制的ASCII码041是叹号但~

'\41' 表示的是一个字符,就是ASCII码041,叹号

要输出41的话,%x 试试

c语言中储存 char和int是没有区别的
41,或者 '!'
用数值输出就是41
用字符输出就是!

  printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。但作为一个特例,不要求在使用 printf 函数之前必须包含stdio.h文件。printf函数调用的一般形式为: printf(“格式控制字符串”, 输出表列),其中格式控制字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。如:
  “%d”表示按十进制整型输出;
  “%ld”表示按十进制长整型输出;
  “%c”表示按字符型输出等。
   非格式字符串原样输出,在显示中起提示作用。输出表列中给出了各个输出项,要求格式字符串和各输出项在数量和类型上应该一一对应。

  看下面例子:
  #include
  int main(void)
  {
  int a=88,b=89;
  printf("%d %d
",a,b);
  printf("%d,%d
",a,b);
  printf("%c,%c
",a,b);
  printf("a=%d,b=%d",a,b);
  return 0;
  }
  本例中四次输出了a、b的值,但由于格式控制串不同,输出的结果也不相同。第3行的输出语句格式控制串中,两格式串%d 之间加了一个空格(非格式字符),所以输出的a、b值之间有一个空格。第4行的printf语句格式控制串中加入的是非格式字符逗号,因此输出的a、b值之间加了一个逗号。第5行的格式串要求按字符型输出a、b值。第6行中为了提示输出结果又增加了非格式字符串。
  
  在Turbo C中格式字符串的一般形式为: [标志][输出最小宽度][.精度][长度]类型。其中方括号[]中的项为可选项。
    1) 类型:类型字符用以表示输出数据的类型,其格式符和意义如下表所示:

  格式字符 意义

  d 以十进制形式输出带符号整数(正数不输出符号)
  o 以八进制形式输出无符号整数(不输出前缀0)
  x,X 以十六进制形式输出无符号整数(不输出前缀Ox)
  u 以十进制形式输出无符号整数
  f 以小数形式输出单、双精度实数
  e,E 以指数形式输出单、双精度实数
  g,G 以%f或%e中较短的输出宽度输出单、双精度实数
  c 输出单个字符
  s 输出字符串
  
  2) 标志:标志字符为 -、+、# 和空格四种,其意义下表所示:

  标 志 意义

  - 结果左对齐,右边填空格
  + 输出符号(正号或负号)
  空格 输出值为正时冠以空格,为负时冠以负号
   ( 对c、s、d、u类无影响; 对o类,在输出时加前缀o; # 对x类,在输出时加前缀0x; 对e、g、f 类当结果有小数时才给出小数点。)
3) 输出最小宽度:用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。 4) 精度:精度格式符以“.”开头,后跟十进制整数。本项的意义是:如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。 5) 长度:长度格式符为h、l两种,h表示按短整型量输出,l表示按长整型量输出。
 
 看下面例子:
  #include
  int main(void){
  int a=15;
  long float b=123.1234567;
  double c=12345678.1234567;
  char d='p';
 printf("a=%d
", a);
  printf("a(%%d)=%d, a(%%5d)=%5d, a(%%o)=%o, a(%%x)=%x

",a,a,a,a); // %% 可以输出 %
 printf("a=%f
", b);
  printf("b(%%f)=%f, b(%%lf)=%lf, b(%%5.4lf)=%5.4lf, b(%%e)=%e

",b,b,b,b);
  printf("c=%f
", c);
  printf("c(%%lf)=%lf, c(%%f)=%f, c(%%8.4lf)=%8.4lf

",c,c,c);
  printf("d=%c
", d);
  printf("d(%%c)=%c, d(%%8c)=%8c
",d,d);
  return 0;
  }
  运行结果为:

  本例中:第11行以四种格式输出整型变量a的值,其中“%5d ”要求输出宽度为5,而a值为15,只有两位故补三个空格。
  第14行以四种格式输出实型量b的值。其中“%f”和“%lf ”格式的输出相同,说明“l”符对“f”类型无影响。“%5.4lf”指定输出宽度为5,精度为4,由于实际长度超过5,故应该按实际位数输出,小数位数超过4位部分被截去。
  第17行输出双精度实数,“%8.4lf ”由于指定精度为4位,故截去了超过4位的部分。
  第20行输出字符量d,其中“%8c ”指定输出宽度为8,故在输出字符p之前补加7个空格。

'\'是转义字符,41是ASCII编码号。

所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。

'\41'是八进制'\041'的一种写法,转换成10进制是(4*8^1+1*8^0) 33,
‘\41’即 33,33是字符‘!’所对应的ASCII码。所以printf( "%c ", '\41 ')等于printf( "%c ",33),那么最后输出的就是字符 '! ' 。

printf("%c,'\41');等价于printf("%c,33);也等价于printf("%c,'!');
\表示转义字符,让后面的字符有另外一个意思。

ascII码


计算机基础语言(急求)
计算机基础语言(急求)  我来答 5个回答 #热议# 网上掀起『练心眼子』风潮,真的能提高情商吗? 满等聊八0h 2023-04-26 知道答主 回答量:47 采纳率:100% 帮助的人:2487 我也去答题访问个人页 关注 展开全部 问题一:计算机语言有哪些?怎么分类? 计算机语言(puter Lnguage)指用于人与...

问一个很简单的C语言问题(判断真假)
1 b+c也是1 b-c也是 1 只要取值不是0,逻辑运算就是1 如果a=0,a||0就是0 a只要不是0 a||0就是1 楼上弄起初运算优先级。。基本运算符 + - * \/高于关系运算符> < >= <=高于逻辑运算符&& || !=

哪些因素会影响一个人的职场口语表达能力?
一个人的职场口语表达能力是指在工作场合中,通过语言交流来传达信息、表达观点、解决问题的能力。这种能力对于个人的职业发展和团队协作具有重要意义。有很多因素会影响一个人的职场口语表达能力,以下是一些主要的因素:1. 语言基础:一个人的语言基础决定了他在职场口语表达能力方面的高低。良好的语言基础...

初学c语言的一个搞不清楚的问题
这个程序是要好好思考下才能弄懂 解题的思路是这样的:单词的数目可以由空格出现的次数决定(连续的若干个空格作为出现一次空格;一行开头的空格不统计在内).如果测出某一个字符为非空格,而它前面的字符是空格,则表示"新的单词开始了",此时使num(单词数)累加1.如果当前字符为非空格而前面的字符也是非空格...

求学C语言过程的一个问题
这是学好《C程序设计》的基础,C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单,但初学者往往会觉的这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全。当多种不同运算组成一个运算表达式,即一...

C语言问题。急急急。编写一个求0~100之间全部偶数之和的程序。(用最...
\/ 解法一:等差数列 0~100的偶数构成了一个首项为0,公差为2的等差数列。通项公式为a(n)=a(1)+(n-1)×d 所以n = (a(n)-a(1))\/d+1 前n项和为S(n)=n*(a(1)+a(n))\/2=[(a(n)-a(1))\/d+1]*(a(1)+a(n))\/2 当然,也可以推广到任意等差数列前n项和的计算。\/ in...

求助一个c语言问题?
(2)负数:去掉原码符号位,其余位按位取反。补码:(1)正数:正数补码是其本身。(2)负数:在反码基础上加1。由上述定义可知:[+0] = [00000000]原 = [00000000]反 = [00000000]补 [-0] = [10000000]原 = [11111111]反 = [00000000]补 既然+0和-0的补码一致,所以只需保留一个(+...

请教一个关于VB的基础问题
score = Val(Text1.Text)这说明score的值等于在文本框内输入的值 ELSE限定了值只能为数字,已经定义了它的范围

儿童言语发展经历哪些基本阶段,具有什么特征 基础心理学
2-3岁:完整句阶段。儿童语言发展最迅速的一个时期。此时儿童可以用合乎语法规则的完整句子更准确的表达思想,还开始使用简单的复合句。【语言发展阶段】儿童开始掌握语音,语法和口语表达能力方面都又迅速发展,为入学后学习书面语言打下基础。儿童言语发展中易出现的问题:儿童言语发展中易出现的问题是指在...

语言学的相关问题
组成音流的“码”就是前面所说的语言符号,是话语的基本结构单位,它的音义关系始终是语言研究中一个最基本、最重要的问题,如何认识和把握这种关系必然会影响语言研究的发展方向。汉语研究传统为什么会不同于印欧语的希腊—罗马传统和印度传统?其终极的原因就在于此;即使在现代,对这一问题的不同认识也正影响着中国...

洛宁县13535089958: C语言的一个基础问题:printf("%c,'\41'); 为什么输出的是 "!" ,感叹号?我看到8进制,41代表感叹号 -
玉儿种复: '\'是转义字符,41是ASCII编码号.所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示.而C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了.

洛宁县13535089958: 问个C语言中最最基础的问题..printf("sum is %d\n",sum); 最后的sum是干什么的,能去掉 ? -
玉儿种复: 首先你要明白printf函数的用法,printf(格式控制,输出列表) 格式控制说明你要输出的数据的格式,输出列表则是你要输出的那个数, 你这里面前面的sum可以不要,但后面的sum一定要

洛宁县13535089958: C语言菜鸟提问:printf scanf %d %f & int 这些字符什么意思 -
玉儿种复: printf 输出语句 scanf 输入语句 %d 整型(数据类型) %f 浮点型(数据类型) int 整型(定义变量)

洛宁县13535089958: 关于C语言printf();的问题.
玉儿种复: 呵呵, 你这个家伙. 首先 printf() 这个函数不是C语言本身的东西,它是被提供在 C语言的运行库中的,也就是 run-time liarary. 所以你不加头文件,是用不了它的,所谓include<stdio.h> 为的是把printf()的相关代码在连接的时候加载进源代...

洛宁县13535089958: 新人开始自学C语言,有个问题不明白 问题1:printf("%d",123)和printf(123 -
玉儿种复: printf("%d",123)在后面加一个分号就是个正确语句,能输出十进制整型数据123;printf(123)即使在其后加一个分号也是错误语句,连编译都过不了.printf可以直接输出字符串,如printf("123");在屏幕上打印字符串123;输出其他类型数据时必须有格式化控制字符串参数,否则就出错,如printf(123);就要出错,因为编译器不知道这是要干什么.所以printf("%d",123)和printf(123)没有可比性.

洛宁县13535089958: C语言编程基础问题
玉儿种复: 如果只是简单的计算字符数的话就简单了 #include<stdio.h> #include<string.h> void main() {char str[100];printf("请输入一个字符串:\n");gets(str);printf("刚才输入的字符串字符数目为:%d\n",strlen(str)); }

洛宁县13535089958: 一个C语言的问题简单的很floata=12.5;printf("
玉儿种复: (1)是将a作为整形打印,但是此时a是float,因此系统处理时会出现问题,因此将会显示出0来 (2)是将a转换为整形后打印,编译器会将a转换为整形,然后打印,因此会出现12的结果 (3)是一个指针操作的问题,(int *)首先将&a强制转换为整形指针,编译器将认为此时获得的地址是一个指向整形数据的指针,因此打印的结果就是将a的数据按照二进制转换为整形打印出来,也就是显示的数据

洛宁县13535089958: 一个C语言的基础问题 -
玉儿种复: 解答:1、 c语言是以分号做为语句的结束.for循环是一个语句所以就必须得有分号,不然编译无法通过,出现语法错误.for语句是循环条件和循环体的组合.你这里给出了循环条件,但是没有循环体.循环体为空.然后以分号表示这个for语句...

洛宁县13535089958: 一个c语言问题.........关于printf输出地问题 -
玉儿种复: 1. \r 是回车,注意只是回车不是换行+回车,先输出了6个r,然后回车也就是跳到了这一行的开头第一个r的位置,再输出a把第一个r覆盖掉了,则输出了1个a和5个r 2. 这个我输出来跟1是一样的结果,输出了1个a和5个r, 你再看看呢?

洛宁县13535089958: c语言编程什么时候printf后用%d,什么时候不用%d -
玉儿种复: %d就是一个“占位符”,d表示整型数据,%d表示为一个整型数据占一个位置.比如:printf("%d is a number", 10);//以上代码会输出:10 is a number假...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网