一、C语言中的合法整型

首先C语言中的整型有三种表示方式:十进制、八进制和十六进制。(C语言中没有表示二进制的整型)

十进制:

如 int a = 63; //一个正常的整型

八进制:

如果想用8进制对变量进行赋值则这样

int a = 077; //八进制给整型赋值

数字0开头,由0~7组成

十六进制:

int a = 0x3F; //十六进制给整型赋值

以0x开头,由0~F组成

所以我们对合法整数的判断,可以首先从进制判断入手,

  1. 若以0开头,则为八进制,不能出现大于等于8的数字;
  2. 若以0x开头,则为十六进制,数字的范围为0~F;
  3. 若都不是,则为十进制,要求数字为0~9。

二、C语言中的合法字符

C语言中的字符常量要求以单引号 ' ' 括起来,否则为非法字符。

除了直接表示的字符外,部分为转义字符比如

'\n'    // 换行
'\t' // 制表
'\\' // 斜杆
'\"' // 引号

还有一部分为用八进制或十六进制整型表示的字符,在对应数值前加上斜杠,注意C语言规定不允许使用斜杠加十进制表示字符!

'?'    // 直接表示的?字符
'\x3F' // 十六进制表示的?字符
'\077' // 八进制表示的?字符

字符的数值表示时,前面的0可以省略,比如 '\x3F' 其实为 '0x3F' ,而 '\077' 可以写成 '\77' (不区分大小写)

!!但,类型为整型时,前面的0则不能省略

  1. 合法字符必须用单引号括起来
  2. 除了直接表示,某些特殊字符需要进行转义,比如斜杠和引号
  3. 通过斜杠加数值可以表示字符,但只能用十六进制和八进制表示
  4. 如果没有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++ 合法整数与字符的更多相关文章

  1. [C语言] 变量和数据类型和整数和字符

    1.数据类型和变量: 数据是放在内存中的,明确三件事:数据存储在哪里.数据的长度以及数据的处理方式 int n;数据类型指明了数据的长度和处理方式,变量名指明了数据存储在哪里 2.数据长度:是指数据占 ...

  2. 【转载】C语言itoa()函数和atoi()函数详解(整数转字符C实现)

    本文转自: C语言itoa()函数和atoi()函数详解(整数转字符C实现) 介绍 C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串. int/float to ...

  3. C语言itoa()函数和atoi()函数详解(整数转字符C实现)

    1.int/float to string/array: C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串,下面列举了各函数的方法及其说明. ● itoa():将 ...

  4. [置顶] C语言itoa()函数和atoi()函数详解(整数转字符C实现)

    头文件:#include <stdlib.h> atoi() 函数用来将字符串转换成整数(int),其原型为: int atoi (const char * str); [函数说明]ato ...

  5. C语言itoa()函数和atoi()函数详解(整数转字符C实现)【转载】

    文章转载自https://www.cnblogs.com/bluestorm/p/3168719.html   C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串. ...

  6. C语言itoa()函数和atoi()函数详解(整数转字符)

    http://c.biancheng.net/cpp/html/792.html C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串. 以下是用itoa()函数将整 ...

  7. 整数转字符与字符转整数的C系统函数

    atoi (表示 alphanumeric to integer)是把字符串转换成整型数的一个函数 http://baike.baidu.com/link?url=VTP54JT5-EY5TL0GFf ...

  8. 【51nod-1315】合法整数集(数位)

    [思路] 既然是or操作,将数转化为二进制,数位是1,对应的数组元素+1,再将x转为成二进制,只要查找X为1的位置,将之前存放的数组数字找个最小的输出就可以了. 但是并不是所有的数都要参与or,因为有 ...

  9. C# 判断一字符串是否为合法数字(正则表达式)

    判断一个字符串是否为合法整数(不限制长度) public static bool IsInteger(string s) { string pattern = @"^\d*$"; ...

随机推荐

  1. 转 Hibernate中cascade和inverse的作用

    Inverse和cascade是Hibernate映射中最难掌握的两个属性.两者都在对象的关联操作中发挥作用.1.明确inverse和cascade的作用inverse 决定是否把对对象中集合的改动反 ...

  2. maven打包报错 ERROR: No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id

    打开pom.xml 在build标签中 增加 <defaultGoal>compile</defaultGoal> 如下: <build><defaultGo ...

  3. jquery清空下拉框,保留第一个

    js中可以document.getElementById("id").options.length = 1;设置 jquery中的设置方法:$("#id option[i ...

  4. [转]Asp.Net Web API 2第十七课——Creating an OData Endpoint in ASP.NET Web API 2(OData终结点)

    本文转自:http://www.cnblogs.com/aehyok/p/3545824.html 前言 很久没更新博客了,加上刚过年,现在准备重新开战,继续自己的学习之路.本文已同步到Web API ...

  5. 对象和类型(数组、ref、out)

    class Program { //数组是引用类型 //如果把数组或类等其他引用类型传递给方法,对应的方法就会使用该引用类型改编数组中值, //而新值会反射到原始数组上 static void Som ...

  6. Silverlight & Blend动画设计系列三:缩放动画(ScaleTransform)

    在Silverlight的动画框架中,ScaleTransform类提供了在二维空间中的坐标内进行缩放操作,通过ScaleTransform可以在水平或垂直方向的缩放和拉伸对象,以实现一个简单的缩放动 ...

  7. MyBatis 指定的转换无效

    表字段Pay类型设置的是float,生成类的属性如下: public double Pay{get;set;} 读取列表时出现如下错误: 错误信息: 查看堆栈跟踪信息, get_Decimal()提示 ...

  8. [javaEE] jsp入门

    Servlet写java代码很好,但是拼接html的时候,非常不方便 JSP可以在html中嵌套java代码,这样在展示的时候,就会比较方便 Tomcat帮我们把jsp的页面翻译成了Servlet去运 ...

  9. Linux中的叹号命令

    在shell环境下操作,需要积累点快捷输入的小技巧: 最常用的技巧恐怕就是Tab自动补全以及上方向键来回退上几条历史命令了,这些对于csh,bash,ksh,zsh都适用. 最近还找到一种快速回退上一 ...

  10. 三个缓存数据库Redis、Memcache、MongoDB

    >>Memcached Memcached的优点:Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key.value的字节大小以及服务器硬件性能,日常环境 ...