-
2016-05-29 13:35:22
在屏幕上输出双引号
#include<stdio.h>
int main()
{
printf("\"");
/* printf("\'");*/
return 0;
}
结果:
"
Press any key to continue
在屏幕上输出单引号
#include<stdio.h>
int main()
{
printf("\'");
return 0;
}
结果:
'
Press any key to continue
本文出自 “岩枭” 博客,请务必保留此出处http://yaoyaolx.blog.51cto.com/10732111/1716165
更多相关内容 -
C语言中如何输出双引号
2020-03-17 21:37:30#include <stdio.h> int main() { printf("\"\""); return 0; } 处理方法:在所要输出的"前面加上/,即可输出双引号#include <stdio.h> int main() { printf("\"\""); return 0; }
处理方法:在所要输出的"前面加上\,即可输出双引号
-
c语言打印输出双引号的方法示例
2020-09-04 20:55:03主要介绍了c语言打印输出双引号的方法,大家参考使用吧 -
C语言中如何正确打印单引号和双引号
2021-03-18 18:46:49C语言中如何正确打印单引号和双引号(字符常量) 编译器 vc++ 2010 最近对C语言中最基本的字符常量产生了一些疑惑,网上了查了查大家说的不太一样,于是自己专门验证了一下。 一、转义字符的方式 由于单双引号都是...C语言中如何正确打印单引号和双引号(字符常量)
编译器 vc++ 2010
最近对C语言中最基本的字符常量产生了一些疑惑,网上了查了查大家说的不太一样,于是自己专门验证了一下。
一、转义字符的方式
由于单双引号都是ASCII中的特殊字符,首先按照转义字符的定义打印结果如下:#include<stdio.h> #include<stdlib.h> int main() { char a = '\''; char b = '\"'; printf("%c\n%c\n",a,b); system("pause"); return(0); }
可见通过加反斜杠成为转义字符的方式可以打印出来单引号和双引号
二、直接用单引号括起来
当双引号用单引号括起来时,此时双引号可以理解是一个普通的字符常量char b = '"'; printf("%c\n",b);
但是,当单引号应用单引号时,编译会发生错误,系统会认为单引号中为空,而单引号中不能为空(不合法)
总结
双引号可以用转义或单引号括起来的方式打印输出,单引号只能用转义字符来打印。
另外以上方法也可以用来检测其他特殊字符,例如 \ 只能用 ’ \\ '打印扩展
① 在printf中输出双引号#include <stdio.h> int main() { printf(" \" school \" "); return 0; }
②基本概念
'\ddd’表示的是三个八位制的ASCII的数
'\xdd’表示的是两个十六进制的ASCII的数
通过对应的八位与十六位制ascii表得到它们代表的字符 -
【C语言进阶剖析】14.C语言中的单引号和双引号
2022-03-07 16:43:50C语言中的双引号用来表示字符串字面量 'a'表示字符字面量,在内存中占1个字节,'a'+1表示'a'的ASCII码加1,结果为'b' "a"表示字符串字面量,在内存中占2个字节,"a"+1表示指针运算,结果指向"a"结束符'\0' ...文章目录
一、单引号和双引号
- C语言中的单引号用来表示字符字面量
- C语言中的双引号用来表示字符串字面量
'a'表示字符字面量,在内存中占1个字节,'a'+1表示'a'的ASCII码加1,结果为'b'
"a"表示字符串字面量,在内存中占2个字节,"a"+1表示指针运算,结果指向"a"结束符'\0'
下面看一段单引号和双引号本质的代码:
#include <stdio.h> int main() { char* p1 = 1 ; char* p2 = '1'; char* p3 = "1"; printf("%s, %s, %s", p1, p2, p3); printf('\n'); printf("\n"); return 0; }
编译后会有警告,继续运行会发生段错误,如下:
究竟问题出现在哪里呢?下面先把打印语句注释掉并运行:
#include <stdio.h> int main() { char* p1 = 1 ; char* p2 = '1'; char* p3 = "1"; //printf("%s, %s, %s", p1, p2, p3); //printf('\n'); //printf("\n"); return 0; }
编译运行虽然有警告,但是没有段错误,那么段错误肯定是打印语句那里了
把打印语句去掉注释
#include <stdio.h> int main() { char* p1 = 1 ; char* p2 = '1'; char* p3 = "1"; printf("%s, %s, %s", p1, p2, p3); //printf('\n'); //printf("\n"); return 0; }
编译运行后果然出现了段错误
究竟是怎么回事呢?接着往下看
二、小贴士
- 字符字面量被编译为对应的 ASCII 码
- 字符串字面量被编译为对应的内存地址
- printf 的第一个参数被当成字符串内存地址
- 内存的低地址空间不能在程序中随意访问
三、程序实例分析1
注意:字符 '1' 所对应的 ASCII 码就是十六进制的 0x00000031
0x08048000 这个内存地址是非常特别的内存地址,所有低于这个地址的内存空间是不能随便访问的,一旦访问,就会发生段错误。程序里面的字符串编译之后得到的地址都是大于 0x08048000,所以在程序中可以访问。
所以说 1 和 '1' 的内存地址都不能访问,访问了就会出现段错误。如果把 printf("%s, %s, %s", p1, p2, p3); 注释打印下面的语句会发生什么?
#include <stdio.h> int main() { char* p1 = 1 ; char* p2 = '1'; char* p3 = "1"; //printf("%s, %s, %s", p1, p2, p3); printf('\n'); printf("\n"); return 0; }
输出结果如下,还是会发生段错误:
四、程序实例分析2
'\n' 字符字面量还是处于地址值区间,所以访问这个地址就会发生段错误。
如果把 printf('\n'); 注释掉
#include <stdio.h> int main() { char* p1 = 1 ; char* p2 = '1'; char* p3 = "1"; //printf("%s, %s, %s", p1, p2, p3); //printf('\n'); printf("\n"); return 0; }
编译就不会出错,而且换了一行:
五、容易混淆的代码
这段代码的本意是如果字符 c 是 "\t" 或者 " " 或者 "\n",,则输入字符。
#include <stdio.h> int main() { char c = " "; while( (c == "\t") || (c == " ") || (c == "\n") ) { scanf("%c", &c); } return 0; }
编译运行后,发现程序并没有让我们输入:
在进行解释之前,先看下面这样会发生什么:
分析:
1)编译后字符串"string"的内存地址被赋值给变量 c2)内存地址占用 4个字节,而变量 c 只占用1个字节
3)由于类型不同,赋值后产生截断
所以说 char c = " "; 赋值后产生截断,那么 while 里面的语句也就不会执行了,这段程序是混淆了字符和字符串的概念。
可以这么改:
#include <stdio.h> int main() { char c = ' '; while( (c == '\t') || (c == ' ') || (c == '\n') ) { scanf("%c", &c); } return 0; }
这样就能正确了:
六、小结
- 单引号括起来的单个字符代表整数
- 双引号括起来的字符代表字符指针
- 编译器接受字符和字符串的比较,无任何意义
- 编译器允许字符串对字符变量赋值,只能得到错误
-
【C语言】双引号中使用宏定义
2021-11-24 16:00:25本文讲述如何在双引号里使用`宏定义常量`,来指定格式化后字符串的长度 -
c语言中单引号和双引号的区别和应用?
2021-05-21 03:01:57C语言中的单引号和双引号的区别首先肯定地说,二者是有区别的,不是说用谁都一样。1、实质区别,代表的含义不同'A'代表的是一个整数,而且这个整数对应的是编译器所采用的字符集中的字符序列对应的数值。所以'A'跟... -
c或c++等语言输出带双引号或单引号的字符串
2021-09-02 16:38:15c或c++等语言输出带双引号或单引号的字符串 单引号可直接输出 双引号需要加两个反斜杠+双引号 (\")*2即\"代表一个双引号 助学示例: 1.输出带双引号的字符串 #include <iostream> using namespace std; ... -
C语言查漏补缺——单引号和双引号
2021-05-25 03:28:25ide1、基本知识spa一、C语言中单引号用来表示字符字面量指针二、C语言中双引号用来表示字符串字面量blog好比:'a'表示字符字面量,在内存中占1个字节, 'a'+1表示的是'a'的ASCII码加1,结果为'b'内存"a"表示字符串... -
c语言中的引号处理--单引号和双引号
2016-12-27 16:42:04双引号中是字符串常量,比如”A”在存储中是: A\0,即用字符’\0’表示字符串的结束 关于引号对比和输出时的转义,用下面的程序说明: #include<stdio.h> main() { int c; while((c=getchar()) != ... -
必须知道的C语言知识细节:单引号和双引号正确用法
2020-07-23 15:58:51C语言中ACSII码字符单引号’和双引号"在程序中经常出现,很简单,但却是十分重要的语法标点符号,初学者容易混淆使用。 单引号在字符常量时使用,表示单个字符。 例如: char c; c = ‘a’; c = ‘1’; c = ‘A’; ... -
c语言知识细节:单引号‘ ‘和双引号“ “的区别
2021-12-21 09:49:20C语言中ACSII码字符单引号和双引号经常出现,有什么区别呢? 1、应用场景 单引号' '用来表示字符常量,表示单个字符 例如: char a; a='A'; a=' 1'; 双引号" "用来表示含有0到多个字符常量的字符串 char p1... -
C++如何输出带双引号的语句
2021-12-09 15:09:49#include <iostream> using namespace std; int main() { cout <<'"' << "i love you"<<'"'<<endl; cout << "\"i love you\""; return 0; } -
C语言(CED)C语言中双引号和单引号的区别
2020-03-13 15:42:31为字符串变量赋初值时用双引号! 具体区别: 1、大小 单引号引起的一个字符,其大小为1个Byte。 双引号引起的字符串,因为在其结尾需加一个二进制“\0”,所以总的大小=(字符个数 + 1 )X 1 Byte 2、实际含义 ... -
C语言 头文件 用中括号和双引号的区别
2021-06-22 15:50:17双引号:会先在源代码目录里搜索。 例子:当系统里(如/usr/include/里)有一个叫做math.h的头文件,而你的源代码目录里也有一个你自己写的math.h头文件,那么使用中括号时用的就是系统里的;而使用双引号的话则会... -
c语言printf输出语句中两层双引号出现错误解决办法
2018-06-26 19:21:13#include <stdio.h> #include <stdlib.h> int main() { printf(" \"HELLO\""); //如果写成printf(" "HELLO" ");就会出现错误 return 0; } -
c语言中单引号和双引号的区别(顺利解决从字符串中提取IP地址的困惑)
2021-05-19 19:16:26c语言中的单引号和双引号可是有很大区别的,使用之前一定要了解他们之间到底有什么不同,下面小编就给大家详细的介绍一下吧,对此还不是很了解的朋友可以过来参考下问题:从c++文件中将std:string转换为char*后,... -
C语言中#include 双引号“ ”与尖括号的区别
2020-07-14 23:27:14C语言中#include 引号“ ”与尖括号< >的区别1、预处理器与预处理指令#1.1 、预处理器1.2、预处理指令#2、#include指令3、总结 1、预处理器与预处理指令# 1.1 、预处理器 预处理器是一个小软件,它可以在编译... -
C语言中的单引号和双引号的区别
2017-10-25 17:00:01大家猜一猜输出的str1的大小是多少?str2输出的大小是多少? ???????????????????????????? 不用猜了,为啥,因为编译不了啊。怎么会编译不了?因为编译器报错了。 看出了... -
printf或者uartPrintf打印输出双引号
2020-11-06 13:37:17输出双引号采用 " 方式 int main(void) { printf(" hello\n “); printf(” “hello” \n "); return 0; } 输出为 hello “hello” -
C++中如何输出带双引号的字符串
2022-01-19 17:47:15c++输出字符串中含有引号 -
cout输出中加入双引号
2021-01-27 09:39:16在C++中使用cout指令输出时,如果引号内使用引号会报错: 此时需要在字符串前后加入\,则可以正常编译执行: -
C语言中%c和%s,双引号和单引号的区别
2021-05-22 08:32:07看程序,不说话~程序:printf("%c~~%s~~%d\n", "a","a", "a");printf("%c~~%s~~%d\n", 'a','a', 'a');printf("%c~~%s~~%d\n", ",",",", ",");printf("%c~~%s~~%d\n", ',',',', ',');编译结果:read.c: In function ... -
C语言头文件尖括号和双引号的区别
2020-02-09 16:41:34双引号是最大范围 一般用于包含用户自己编写的头文件 编译器会先在项目的当前目录查找 找不到后才会向尖括号那样 去系统配置的库环境变量和用户配置的路径去搜索 初学的同学的话可以理解你打完代码 点击运行到输出... -
c语言学习笔记(7)单引号,双引号和逻辑符号的用法
2015-09-25 16:33:00c语言中的单引号用来表示字符常量,双引号用来表示字符串常量。 比如’a’表示字符常量,在内存中占一个字节,’a’+1就表示’a’的ascii码+1,就是’b’。 比如”a”表示字符串常量,在内存中