单引号和双引号
来源:互联网 发布:高斯模糊算法实现 c 编辑:程序博客网 时间:2024/05/17 04:32
符号的技巧
专题二:符号的技巧。包括以下章节:
- 注释符号
- 接续符和转义符
- 单引号和双引号
- 逻辑运算符使用分析
- 位运算符分析
- ++、–操作符使用分析
- 优先级和类型转换分析
问题
- 讨论这个问题有意义吗?
#include <stdio.h>int main(){ char* p1 = 1; //p1指向内存地址为1的地方。赋值会出现警告,不会编译出错。 char* p2 = '1';//p2指向内存地址为49的地方('1'=49)。 char* p3 = "1";//p3指向内存中的字符串"1"常量的地址。 printf("%s, %s, %s\n", p1, p2, p3);//低位的内存地址是给操作系统使用的,不能访问。如果访问会出现段错误。 printf('\n');//printf第一个参数是char* fmt,相当于char* fmt = 10。('\n'=10) printf("\n"); return 0;}
单引号和双引号
- c语言中的单引号用来表示字符常量
- c语言中的双引号用来表示字符串常量
‘a’表示字符常量,在内存中占1个字节,’a’+1表示’a’ASCII码+1,结果为’b’;
“a”表示字符串常量,在内存中占2个字节(’a’和’\0’),”a”+1表示指针运算,结果指向”a”结束符’\0’。
实例分析3-1:混淆概念的代码
3-2.c
#include<stdio.h>int main(){ //将字符串" "赋值给字符c:表示将一个字符串的内存地址赋值给字符c。假如字符串" "的在内存中的地址是0xAABBCCDD,那么字符c值未0xDD。(取最后两位) char c = " "; //c的值0xDD,与"\t"的地址值," "的地址值,"\n"的地址值比较 while(c == "\t" || c == " " || c == "\n") { scanf("%c", &c); } return 0;}
编译结果:
正确的写法:
3-3.c
#include<stdio.h>int main(){ char c = ' '; while(c == '\t' || c == ' ' || c == '\n') { scanf("%c", &c); } return 0;}
结果:
小结
- 本质上单引号括起来的一个字符代表一个整数
- 双引号括起来的内容代表一个字符串,一个指针(字符串常量所在的内存地址)
- c编译器结束字符和字符串的比较,可意义是错误的
- c编译器允许把字符串赋值给一个字符变量,但是没意义
阅读全文
0 0
- 双引号和单引号
- 单引号和双引号
- javascript单引号和双引号
- 双引号和单引号
- javascript单引号和双引号
- 单引号和双引号
- PHP单引号和双引号
- PHP单引号和双引号
- 区分单引号和双引号
- mysql单引号和双引号
- 单引号和双引号
- 2.3、单引号和双引号
- 单引号和双引号
- 单引号和双引号
- javascript单引号和双引号区别
- Oracle中的单引号和双引号
- oracle中的单引号和双引号
- oracle中的单引号和双引号
- 优酷视频播放接口解析
- 安卓学习系列
- 深度强化学习——连续动作控制DDPG、NAF
- wamp安装redis扩展
- CF 455B trie上博弈
- 单引号和双引号
- Android sutdio Error:Failed to crunch file 错误的解决
- table中的td设置固定宽度,没有效果
- 一个故事告诉你比特币的原理及运作机制
- 加密与解密-基础知识
- Oracle 顺序控制GOTO语句(exit,continue)
- 今天主要用到了mysql中的%化数据的方法
- Spring中MXBean已注册的解决办法
- CSS3实现点点点加载中或登录中