• C/C++ 合法整数与字符


    一、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语言中的字符常量要求以单引号 ' ' 括起来,否则为非法字符。

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

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

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

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

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

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

    1. 合法字符必须用单引号括起来
    2. 除了直接表示,某些特殊字符需要进行转义,比如斜杠和引号
    3. 通过斜杠加数值可以表示字符,但只能用十六进制和八进制表示
    4. 如果没有x,且出现了大于等于8的数,则为非法字符

     -例

    1 int main(){
    2     int x = 108, y = 012;
    3     printf("%2d, %2d
    ", x, y);
    4     return 0;
    5 }

    先是x,%2d表示宽域(不足则前补空格)108长度大于2,所以直接输出。

    然后y,有些人会以为输出为12,或是012。

    其实不然,这里以0开头,表示八进制。而输出格式为%2d,十进制,所以正确的结果为10。

    输出为

    1 108, 10
  • 相关阅读:
    html中的a标签
    dl,dt,dd标签的使用
    MySQL innodb中各种SQL语句加锁分析
    Js字符串与十六进制的相互转换 【转】
    亿级Web系统搭建:单机到分布式集群【转】
    pm2 设置开机启动
    spring cloud 项目相关集成简介
    spring boot下JedisCluster方式连接Redis集群的配置
    并发编程 – Concurrent 用户指南--转
    JDBC 事务和 JTA 事务
  • 原文地址:https://www.cnblogs.com/Axi8/p/10348053.html
Copyright © 2020-2023  润新知