zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    【LeetCode】17. Letter Combinations of a Phone Number
    【LeetCode】16. 3Sum Closest
    【LeetCode】15. 3Sum 三个数和为0
    【LeetCode】14. Longest Common Prefix 最长前缀子串
    【LeetCode】13. Roman to Integer 罗马数字转整数
    【LeetCode】12. Integer to Roman 整型数转罗马数
    【LeetCode】11. Container With Most Water
    【LeetCode】10. Regular Expression Matching
    Models of good programmer
    RSA Algorithm
  • 原文地址:https://www.cnblogs.com/Axi8/p/10348053.html
Copyright © 2011-2022 走看看