cgg之字面值
字面值时源代码中用来描述固定值的记号,可能是整数、浮点数、字符或者字符串
2.1 整数常量
除了常见的十进制数外,还有八进制(以数字0开头)或者十六进制(0x/0X)表示法。
#include <stdio.h> int main()
{
int x = ;
int y = 0x0A; printf("x=%d,y=%d\n",x,y);
return ;
}
输出:
x=8,y=10
常量类型可以通过后缀来区分类型
0x200 -->int
200U -->unsigned int 0L -->long
0xf0f0UL -->unsigned long 0777LL --->long long
0xFFULL --->unsigned long long
2.2 浮点常量
默认浮点常量是double,可以用F后缀表示float,用L后缀表示long double
printf("%f\n",0.111111111F);
printf("%f\n",0.11111);
printf("%Lf\n",.9999999999L);
printf("%Lf\n",.99L);
输出:
0.111111
0.111110
1.000000
0.990000
对于long double输出必须使用%Lf的格式,否则输出结果是错误的。
2.3 字符常量
字符常量默认是int类型,除非用前置L表示wchar_t宽字符类型
#include <stdio.h>
#include <locale.h> int main()
{
int i; printf("%c,%c,%c\n",c,c2,c3); setlocale(LC_CTYPE,"en_US.UTF-8");
wchar_t wc = L'中'; char buf[] = {}; int len = wctomb(buf,wc); printf("%d\n",len); for(i = ; i<len; i++)
printf("0x%02X ",(unsigned char)buf[i]);
printf("\n"); return ;
}
输出:
0xE4 0xB8 0xAD
使用python进行验证
>>> astr='中'
>>> astr
'\xe4\xb8\xad'
结果正确。
2.4 字符串常量
C语言中的字符串是一个以NULL(也就是\0)结尾的char数组。
空字符串在内存中占用一个字节,包含一个NULL字符。
char s[] = "Hello,World!\n";
printf("strlen=%d\n",strlen(s));
printf("sizeof=%d\n",sizeof(s)); #输出结果为: strlen=
sizeof=
------------------------------------------------------------------
char* ps = "Hello,World!\n";
printf("strlen=%d\n",strlen(ps));
printf("sizeof=%d\n",sizeof(ps)); #输出结果为:
strlen=
sizeof=8 #是指针char*代表的大小
同样可以使用L前缀声明一个宽字符串。
#include <stdio.h>
#include <locale.h> int main()
{
int i; printf("%c,%c,%c\n",c,c2,c3); setlocale(LC_CTYPE,"en_US.UTF-8");
wchar_t* ws = L"中国人"; char buf[] = {}; size_t len = wcstombs(buf,ws,); printf("%ls\n",ws);
printf("%d\n",len); for(i = ; i<len; i++)
printf("0x%02X ",(unsigned char)buf[i]);
printf("\n"); return ;
}
输出:
中国人 0xE4 0xB8 0xAD 0xE5 0x9B 0xBD 0xE4 0xBA 0xBA
使用python进行验证:
>>> astr="中国人"
>>> astr
'\xe4\xb8\xad\xe5\x9b\xbd\xe4\xba\xba'
和char字符串类似,wchar_t字符串以一个4字节的NULL结束。
#include <stdio.h>
#include <locale.h> int main()
{
int i; setlocale(LC_CTYPE,"en_US.UTF-8");
wchar_t ws[] = L"中国人"; printf("%ls\n",ws); printf("len=%d,size=%d\n",wcslen(ws),sizeof(ws)); int len = sizeof(ws);
unsigned char* b = (unsigned char*)ws; for(i = ; i<len; i++)
printf("0x%02X ",b[i]);
printf("\n"); return ;
}
输出结果为:
中国人
len=3,size=16
0x2D 0x4E 0x00 0x00 0xFD 0x56 0x00 0x00 0xBA 0x4E 0x00 0x00 0x00 0x00 0x00 0x00
编译器会自动连接相邻的字符串,便于在宏或者代码中更好地处理字符串。
对于源代码中超长的字符串,除了使用相邻字符串外,还可以用"\"在行尾换行,这个在很多语言都支持。
#include <stdio.h>
#define WORLD "world!"
int main()
{
char* s = "Hello" " "WORLD"\n"; char* s2 = "Hello"
" World!\n"; char* s3 = "Hello \
World!\n";
printf("%s",s);
printf("%s",s2);
printf("%s",s3);
return ;
}
输出结果为:
Hello world!
Hello World!
Hello World!
cgg之字面值的更多相关文章
- C++中的字面值指定类型
C++中只有内置类型存在字面值,没有类(class)类型字面值.例如:0是int类型的字面值,3.14159是double类型的字面值. 字面值类型很多 整型浮点字面值 20 ...
- [原创]java WEB学习笔记98:Spring学习---Spring Bean配置及相关细节:如何在配置bean,Spring容器(BeanFactory,ApplicationContext),如何获取bean,属性赋值(属性注入,构造器注入),配置bean细节(字面值,包含特殊字符,引用bean,null值,集合属性list map propert),util 和p 命名空间
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- c++学习笔记——字面值常量类
字面值常量类:数据成员都是字面值类型的聚合类是字面值常量类.如果一个类不是聚合类,但是它符合一下要求,则它也是个字面值常量类: 1.数据成员都必须是字面值类型. 2.类必须至少含有一个constexp ...
- Java基础-字面值
在Java源代码中,字面值用于表示固定的值(fixed value).数值型的字面值是最常见的,字符串字面值可以算是一种,当然也可以把特殊的null当做字面值.字面值大体上可以分为整型字面值.浮点字面 ...
- Python文本(字面值)
Python中的文本是一些内置类型的常量表示方法. 字符串和字节 字符串是一系列的字符序列,Python中用单引号(''),双引号(""),或者三个单引号(''' ''')三个双引 ...
- C语言的 (强制类型转换) 以及 '字符字面值'
C语言的显式/隐式类型转换,都有一个中间变量的存在,原数据的类型.内容都不变. 以下代码,都用GCC编译. #include<stdio.h> int main() { char c = ...
- 使用#define定义字面值和伪函数
#define是C语言提供的宏命令,其主要目的是:在编程时,为程序员提供一定方便,并能在一定程度上提高程序的执行效率.#define将一个标示符定义为一个字符串,该标示符被称为宏,被定义的字符串称为字 ...
- C++ 字符串字面值
C++ 字符串字面值 C++ 基本字符串类型 C++ 字符串类型 char 和 wchar_t c11 新增了 char16_t 和 char32_t 例子: wchat_t title[] = L& ...
- c风格字符串,字符串字面值,c++字符串
C风格字符串:本质上就是以空字符null为结束符的数组 可以简单的理解为:有'\0'的是c风格字符串,无'\0'的是普通字符数组 字符串字面值:是一串常量字符,字符串字面值常量用双引号括起来的零个或多 ...
随机推荐
- Rx 入门指引 (一)
自学 Rx 快有一个周了, 它非常适合处理复杂的异步场景.结合自己所学,决定写系列教程. 我认为, Rx 中强大的地方在于两处 管道思想,通过管道,我们订阅了数据的来源,并在数据源更新时响应 . 强大 ...
- Sqlite常用sql语句
sqlite常用sql语句 --返回UTC时间 select CURRENT_TIMESTAMP; --返回本地时间 select datetime(CURRENT_TIMESTAMP,'localt ...
- ASP.NET Web API 2中的错误处理
前几天在webapi项目中遇到一个问题:Controller构造函数中抛出异常时全局过滤器捕获不到,于是网搜一把写下这篇博客作为总结. HttpResponseException 通常在WebAPI的 ...
- FixedUpdate真的是固定的时间间隔执行吗?聊聊游戏定时器
0x00 前言 有时候即便是官方的文档手册也会让人产生误解,比如本文将要讨论的Unity引擎中的FixedUpdate方法. This function is called every fixed f ...
- vim中SnipMate 和 YouCompleteMe 插件触发键 tab 冲突
花了好几天废了九牛二虎之力终于在win下把ycm插件装上了 然而在配置插件的时候发现snipmate插件与youcompleteme插件会发生tab键冲突 而ycm比较调,直接使snipmate插件完 ...
- UVa11212,Editing a Book
正如书上所说,本题需要用IDA*算法求解 启发函数是3d+h>3maxd(d为当前操作步骤数,h为当前逆序对数,maxd为当前枚举的最大步骤数) 可见迭代递归的核心思想是枚举ans去dfs是否可 ...
- cocoapods导入第三方库提示RPC failed curl 18 transfer
错误提示: error: RPC failed; curl 18 transfer closed with outstanding read data remaining fatal: The rem ...
- formData 无需form异步上传多个图片
上周帮其它公司套一下一个web端微信投票系统的后台接口,遇到了一个图片以及视频上传报名的小问题,网上实现方式有很多但都不是ui上面的效果,于是自己动手改造了一个.先来看看效果图 流程很简单,就是点击每 ...
- 如何设置App的启动图
如何设置App的启动图,也就是Launch Image? Step1 1.点击Image.xcassets 进入图片管理,然后右击,弹出"New Launch Image" 2.如 ...
- MongoDB全文检索
1. 全文检索概念: 全文检索是对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式. (暂时不支持中文) ...