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

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

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

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

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

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

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

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

原文地址:https://www.cnblogs.com/Axi8/p/10348053.html

时间: 2024-07-30 07:53:27

C/C++ 合法整数与字符的相关文章

51nod 1315 合法整数集 (位操作理解、模拟、进制转换)

1315 合法整数集 题目来源: TopCoder 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注 取消关注 一个整数集合S是合法的,指S的任意子集subS有Fun(SubS)!=X,其中X是一个固定整数,Fun(A)的定义如下: A为一个整数集合,设A中有n个元素,分别为a0,a1,a2,...,an-1,那么定义:Fun(A)=a0 or a1 or ... or an-1:Fun({}) = 0,即空集的函数值为0.其中,or为或操作. 现在

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

C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串. 1.int/float to string/array: C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串,下面列举了各函数的方法及其说明.● itoa():将整型值转换为字符串.● ltoa():将长整型值转换为字符串.● ultoa():将无符号长整型值转换为字符串.● gcvt():将浮点型数转换为字符串,取四舍五入.● ecvt():将双精度浮点型值转换为字符串

指针指向整数,字符,及字符串时,相应地址取法

指针指向整数时: 1 #include <iostream> 2 3 int main(void) 4 { 5 using namespace std; 6 int a = 10; 7 int *p = &a; 8 9 cout << "sizeof(p) = " << sizeof(p) << endl; 10 cout << "sizeof(&p) = " << sizeof

51 NOD 1315 合法整数集(思维 + 模拟)

传送门 一个整数集合S是合法的,指S的任意子集subS有Fun(SubS)!=X,其中X是一个固定整数,Fun(A)的定义如下: A为一个整数集合,设A中有n个元素,分别为a0,a1,a2,-,an-1,那么定义:Fun(A)=a0 or a1 or - or an-1:Fun({}) = 0,即空集的函数值为0.其中,or为或操作. 现在给你一个集合Y与整数X的值,问在集合Y至少删除多少个元素能使集合Y合法? 例如:Y = {1,2,4},X=7:显然现在的Y不合法,因为 1 or 2 or

字符变量:给字符变量赋整数(字符型、整型数据通用)。

#include<stdio.h>void main(){     int i,j;     char c1,c2;     i='a';j='b';   //字符赋值给整型变量//     c1=97;c2=98;   //整数赋值给字符变量//     printf("%c,%c,%c,%c\n",i,j,c1,c2);   //以字符形式输出//     printf("%d,%d,%d,%d\n,i,j,c1,c2");   //以十进制整数形式

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

http://c.biancheng.net/cpp/html/792.html C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串. 以下是用itoa()函数将整数转换为字符串的一个例子: # include <stdio.h> # include <stdlib.h> void main (void) { int num = 100; char str[25]; itoa(num, str, 10); printf("The num

杨辉三角,整数转为字符

可输入打印行数且美观的杨辉三角 将整数转换为字符串(考虑正负数) /*#include<stdio.h> int main() {  int i,j,line,data;  int arr[100][100]={0};  printf("请输入你要打印的杨辉三角行数\n");     scanf("%d",&line);  for(i=0;i<line;i++)  {   arr[i][0]=1;      arr[i][i]=1;  }

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

atoi (表示 alphanumeric to integer)是把字符串转换成整型数的一个函数 http://baike.baidu.com/link?url=VTP54JT5-EY5TL0GFfd49bGrgK7x-CjgU6onYPMMS694itag7FSAZs_0k3IXDAXUKVumKNXt5AP1xacUOPQ7PK #include <stdlib.h> #include <stdio.h> int main(void) { int n; char *str =

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

[思路] 既然是or操作,将数转化为二进制,数位是1,对应的数组元素+1,再将x转为成二进制,只要查找X为1的位置,将之前存放的数组数字找个最小的输出就可以了. 但是并不是所有的数都要参与or,因为有些数的位数>X,显然这些数是不用删除的,所以不用让这些数加到数组里.还有哪些数呢?当有些数的位数是1,而X对应的位数是0,这些数也是一定不用删除的.综合以上只要满足(x|xx)> x就可以参与or. [code] #include <bits/stdc++.h> using names