C/C++ 合法整数与字符
2024-10-19 12:50:10
一、C语言中的合法整型
首先C语言中的整型有三种表示方式:十进制、八进制和十六进制。(C语言中没有表示二进制的整型)
十进制:
如 int a = 63; //一个正常的整型
八进制:
如果想用8进制对变量进行赋值则这样
int a = 077; //八进制给整型赋值
以数字0开头,由0~7组成
十六进制:
int a = 0x3F; //十六进制给整型赋值
以0x开头,由0~F组成
所以我们对合法整数的判断,可以首先从进制判断入手,
- 若以0开头,则为八进制,不能出现大于等于8的数字;
- 若以0x开头,则为十六进制,数字的范围为0~F;
- 若都不是,则为十进制,要求数字为0~9。
二、C语言中的合法字符
C语言中的字符常量要求以单引号 ' ' 括起来,否则为非法字符。
除了直接表示的字符外,部分为转义字符比如
'\n' // 换行
'\t' // 制表
'\\' // 斜杆
'\"' // 引号
还有一部分为用八进制或十六进制整型表示的字符,在对应数值前加上斜杠,注意C语言规定不允许使用斜杠加十进制表示字符!
'?' // 直接表示的?字符
'\x3F' // 十六进制表示的?字符
'\077' // 八进制表示的?字符
字符的数值表示时,前面的0可以省略,比如 '\x3F' 其实为 '0x3F' ,而 '\077' 可以写成 '\77' (不区分大小写)
!!但,类型为整型时,前面的0则不能省略
- 合法字符必须用单引号括起来
- 除了直接表示,某些特殊字符需要进行转义,比如斜杠和引号
- 通过斜杠加数值可以表示字符,但只能用十六进制和八进制表示
- 如果没有x,且出现了大于等于8的数,则为非法字符
-例
int main(){
int x = , y = ;
printf("%2d, %2d\n", x, y);
return ;
}
先是x,%2d表示宽域(不足则前补空格)108长度大于2,所以直接输出。
然后y,有些人会以为输出为12,或是012。
其实不然,这里以0开头,表示八进制。而输出格式为%2d,十进制,所以正确的结果为10。
输出为
,
最新文章
- Java网络编程初探
- 冲刺阶段 day12
- js 日期
- SublimeText使用技巧
- 使用ngin的静态文件下载
- js get 传参 汉字 乱码问题
- 从零开始学ios开发(十五):Navigation Controllers and Table Views(中)
- MyBatis(1):MyBatis入门
- Tair是一个高性能,分布式,可扩展,高可靠的key/value结构存储系统(转)
- java设计模式之单例模式以及实现的几种方法
- Multi-Anti-Nim游戏结论及证明
- 封装微信小程序支付
- jmap -histo pid 输出的[C [B [I [S 的含义
- React Native从入门到放弃之环境搭建
- jmeter JDBC connection configuration配置方式
- Docker和k8s的区别与介绍
- powershell -enc参数无法解码base64编码payload的解决方案
- ThreadLocal介绍
- BZOJ1040 骑士 【环套树 树形dp】
- CentOS 6.3 下编译Nginx(笔记整理)
热门文章
- Delphi对Word的基本操作
- 在页面中嵌入svg的几种方法
- 基于Metronic4.1的Bootstrap脚本样式说明
- 深入理解BSS(Block Started by Symbol)
- Golang教程:类型
- [转]用Excel制作甘特图并管理项目
- Bitbucket 关联 VS
- A space or line break was encountered after the ";@"; character. Only valid identifiers, keywords, comments, ";("; and ";{"; are valid at the start of a code block and they must occur immediately following
- linux免密登录ssh验证配置方法及常见错误解决
- JS 操作 HTML 和 AJAX 请求后台数据