C/C++ 合法整数与字符
一、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。
输出为
,
C/C++ 合法整数与字符的更多相关文章
- [C语言] 变量和数据类型和整数和字符
1.数据类型和变量: 数据是放在内存中的,明确三件事:数据存储在哪里.数据的长度以及数据的处理方式 int n;数据类型指明了数据的长度和处理方式,变量名指明了数据存储在哪里 2.数据长度:是指数据占 ...
- 【转载】C语言itoa()函数和atoi()函数详解(整数转字符C实现)
本文转自: C语言itoa()函数和atoi()函数详解(整数转字符C实现) 介绍 C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串. int/float to ...
- C语言itoa()函数和atoi()函数详解(整数转字符C实现)
1.int/float to string/array: C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串,下面列举了各函数的方法及其说明. ● itoa():将 ...
- [置顶]
C语言itoa()函数和atoi()函数详解(整数转字符C实现)
头文件:#include <stdlib.h> atoi() 函数用来将字符串转换成整数(int),其原型为: int atoi (const char * str); [函数说明]ato ...
- C语言itoa()函数和atoi()函数详解(整数转字符C实现)【转载】
文章转载自https://www.cnblogs.com/bluestorm/p/3168719.html C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串. ...
- C语言itoa()函数和atoi()函数详解(整数转字符)
http://c.biancheng.net/cpp/html/792.html C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串. 以下是用itoa()函数将整 ...
- 整数转字符与字符转整数的C系统函数
atoi (表示 alphanumeric to integer)是把字符串转换成整型数的一个函数 http://baike.baidu.com/link?url=VTP54JT5-EY5TL0GFf ...
- 【51nod-1315】合法整数集(数位)
[思路] 既然是or操作,将数转化为二进制,数位是1,对应的数组元素+1,再将x转为成二进制,只要查找X为1的位置,将之前存放的数组数字找个最小的输出就可以了. 但是并不是所有的数都要参与or,因为有 ...
- C# 判断一字符串是否为合法数字(正则表达式)
判断一个字符串是否为合法整数(不限制长度) public static bool IsInteger(string s) { string pattern = @"^\d*$"; ...
随机推荐
- tar压缩命令
01-.tar格式解包:[*******]$ tar xvf FileName.tar打包:[*******]$ tar cvf FileName.tar DirName(注:tar是打包,不是压缩! ...
- 【Javascript】Javascript原型与继承
一切都是对象! 以下的四种(undefined, number, string, boolean)属于简单的值类型,不是对象.剩下的几种情况——函数.数组.对象.null.new Number(10) ...
- KMeans实现
KMeans实现 符号 \(K\): 聚类的个数 \(x^{(i)}\): 第i个样本 \(\mu_{1},\mu_{2},...\mu_{K}\): K个中心节点 \(c^{(i)}\): 第i个样 ...
- 公司管理系列--80% of Your Culture is Your Founder(FaceBook)
80% of Your Culture is Your Founder When Molly Graham joined Facebook in 2008, the company still ...
- JS将文件像form表单一样提交到后台
这是很简单.. HTML <div> <input type="file" id="myfile"> <input type=&q ...
- C++命名空间使用代码
namesp.h #pragma once #include <string> namespace pers { using namespace std; struct Person { ...
- C#项目””是针对”.NETFramework,Version=v4.5.2”但此计算机没有,需要修改为v4.5.1.
每次下载别人的代码都会出现这样的问题,以为是没有安装.NETFramework,就下载安装了,但是每次安装都会出现已安装高版本的4.6(Win10自带),无需下次安装,但是每次VS中都会显示有问题,而 ...
- javaweb之MVC设计模式
1.MVC简介 MVC是Model-View-Controller的简称,即模型-视图-控制器.MVC是一种设计模式,它把应用程序分成三个核心模块:模型,视图,控制器,它们各自处理自己的任务. 模型( ...
- Linux基础之命令练习Day7-nginx,nfs
一. Nginx Nginx("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由Igor Sysoev为俄罗 ...
- [转]JSON.parse()和JSON.stringify()
parse用于从一个字符串中解析出json对象,如 var str = '{"name":"huangxiaojian","age":&qu ...