c语言中的\a怎么用呢?

书上说是转义字符 \a 发出铃声,这是什么意思啊?可以指定一个音乐自动播放吗?

所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。
转义字符串(Escape Sequence)也称字符实体(Character Entity)。在HTML中,定义转义字符串的原因有两个:第一个原因是像“<”和“>”这类符号已经用来表示HTML标签,因此就不能直接当作文本中的符号来使用。为了在HTML文档中使用这些符号,就需要定义它的转义字符串。当解释程序遇到这类字符串时就把它解释为真实的字符。在输入转义字符串时,要严格遵守字母大小写的规则。第二个原因是,有些字符在ASCII字符集中没有定义,因此需要使用转义字符串来表示。 其实所有编程语言,拥有转义字符的原因基本上是两点:一、使用转义字符来表示字符集中定义的字符,比如ASCll里面的控制字符及回车换行等字符,这些字符都没有现成的文字代号。所以只能用转义字符来表示 。二、某一些特定的字符在编辑语言中被定义为特殊用途的字符。这些字符由于被定义为特殊用途,它们失去了原有的意义。比如说Html中,<被HTML定义为标签的开始,所以当我们转入<时, HTML就会把它当作为开始,而不是当作一个<来看待。再如PHP 的双引号("),被PHP定义为字符串的外围标签,所以如果你在 一对双引号里面,还想要使用双引号,只能使用转义字符了。不然PHP就会报错了。
分成三部分:第一部分是一个&符号,英文叫ampersand;第二部分是实体(Entity)名字或者是#加上实体(Entity)编号;第三部分是一个分号。 比如,要显示小于号(<),就可以写 < 或者 < 。 用实体(Entity)名字的好处是比较好理解,一看lt,大概就猜出是less than的意思,但是其劣势在于并不是所有的浏览器都支持最新的Entity名字。而实体(Entity)编号,各种浏览器都能处理。 提示:实体名称(Entity)是区分大小写的。 备注:同一个符号,可以用“实体名称”和“实体编号”两种方式引用,“实体名称”的优势在于便于记忆,但不能保证所有的浏览器都能顺利识别它,而“实体编号”则没有这种担忧,但它实在不方便记忆。
通常情况下,HTML会自动截去多余的空格。不管你加多少空格,都被看做一个空格。比如你在两个字之间加了10个空格,HTML会截去9个空格,只保留一个。为了在网页中增加空格,你可以使用 表示空格。
\a 响铃(BEL) 007
\b 退格(BS) 008
\f 换页(FF) 012
\n 换行(LF) 010
\r 回车(CR) 013
\t 水平制表(HT) 009
\v 垂直制表(VT) 011
\\ 反斜杠 092
\? 问号字符 063
\' 单引号字符 039
\" 双引号字符 034
\0 空字符(NULL) 000
\ddd 任意字符 三位八进制
\xhh 任意字符 二位十六进制

字符型常量所表示的值是字符型变量所能包含的值。我们可以用ASCII表达式来表示一个字符型常量,或者用单引号内加反斜杠表示转义字符。
'A', '\x2f', '\013';
其中:\x表示后面的字符是十六进制数,\0表示后面的字符是八进制数。
注意:在Turbo C 2.0中,字符型常量表示数的范围是-128到127,除非你把它声明为unsigned,这样就是0到255。
上面我们见到的\x,\n,\a等等都是叫转义字符,它告诉编译器需要用特殊的方式进行处理。下面给出所有的转义字符和所对应的意义:
转义字符 描述
\' 单引号
\" 双引号
\\ 反斜杠
\0 空字符
\ccc (最多三位)八进制数
\a 声音符
\b 退格符
\f 换页符
\n 换行符
\r 回车符
\t 水平制表符
\v 垂直制表符
\xhh(最多两位)十六进制符
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-04-15
for (i=0; i<2; i++)
i=0 往下执行 for(j=0; j<2; j++)
j=0往下执行 for(k=0; k<2; k++)

k=0 往下执行 printf(“%d %d %d\n", i, j, k);
输出 i j k 显然输出的是 0 0 0
输出后执行 k++, k值变为1 与2比较 显然 k<2 继续执行 输出
此时 i=0 j=0 k=1 输出为 0 0 1
输出后执行 k++, k值变为2 与2比较 显然 2<2 为假,跳出k循环回到上一级循环执行 j++
j=1与2比较 显然1<2 往下执行(此时i=0 , j=1)再次执行k循环int k=0
将k值重新赋值为0 执行输出 此时 i=0 j=1 k=0 输出 0 1 0
执行输出后k++,k值为1与2比较 显然1<2 继续 k的循环 此时k=2,j=1 i=0
执行输出为 0 1 1
输出后k++ ,k值为2与2比较 2<2为假跳出k循环 返回j循环 返回时k=2,j=1 i=0 执行j++ ,j的值为 2显然 2<2为假 ,跳出j循环 返回i循环 此时k=2,j=2 i=0, 执行i++,i值为1 与2比较 显然1<2 往下执行

i=1,执行 j 循环 int j=0 j值变为0
j=0 向下执行 k循环 int jk=0 k值变为0
k=0 向下执行输出 此时 i=1 j=0 k=0 输出 1 0 0
(此时回到了i=0的开始情况 )
参照前面的分析继续执行 依次会 输出 1 0 1
1 1 0
1 1 1
当输出到 1 1 1 的 时候继续想下执行k++,k值变为2 与2比较 结果为假回到j循环此时 i=1,j=1 ,k=2 ;执行j 循环中的j++,j值为2与2比较 结果为假回到i循环此时 i=1,j=2 ,k=2 ;执行i 循环中的i++,i值为2与2比较 结果为假退出循环 此时i=2,j=2 ,k=2;退出循环后下下执行结束程序

对于问题2 while(1)就是条件为永真 你用while(3) while(2) 都可以 就是while()函数的语句不停的执行 ,此时只能用跳转或者break 语句来跳出循环
但是while(0)表示永假 即while()里面的不执行 当然do while()除外 它是先执行后判断,但是也仅仅执行席次就不在执行了for(;;)里面空的意思就是条件为永真,没有退出的判别条件也就是相当于while(1)(习惯用 1 0 表示真假) 当然也可以用break或者跳转退出循环,但是那和for(;;)的判断无关。 所以for(;;)简单的讲就是条件为永真 循环不断的执行 除非遇到函数内部的跳转 或者函数里面嵌套的判断退出为止
eg : 1>
int i=0;
int j=0;
for(;;) {i++;
j++ ;} //不停的死循环
2>int i=0;
int j=0;
for(;;) {i++;
j++ ;
if(i>10)break;
}
不停的循环直到i>10由内部判断退出循环

对于问题3 你只要将 1维理解 和for语句的一维理解透彻 再在此基础上扩展就行了
多维数组可以分解为多个一维数组的 多个for的嵌套同样可以分解为一个一个的循环
只要很清晰的知道 数组下标 与判断时候条件值的状态 就好分析了
对于初学者来数 数组画图分析 以表格的形式在纸上分析,而循环语句同样的将判断的条件分解来 在纸上模拟,一步一步的跟进状态 从简单的开始慢慢深入 ,不怕麻烦 仔细研究很如意理解的.
另外,站长团上有产品团购,便宜有保证
第2个回答  推荐于2017-12-15
#include <stdio.h>
int main()
{
printf("test:\a");
return 0;
}
测试的时候,会听到嘟的一声,它不能自动播放音乐的,就一个“嘟”本回答被网友采纳
第3个回答  2011-04-10
不能,只响一声
相似回答