C和C++基础语法集锦

By MLTech

不常用C/C++,整理一些基础语法备忘。

编译器知识

一般在苹果机之外的电脑,printf() 从左往右扫描,从右往左计算。
在苹果机下,printf 从左往右扫描,从左往右计算。
这其实和编译器用的c库有关。一般大家为了方便,直接通过在mac下安装xcode,进而达到安装c库的目的。所以在使用printf()的时候最好避免进行计算。下面代码在mac运行下为 2 2 2 2,别的电脑下运行为: 2 2 3 2。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>

int main(){
int a = 2;
int *p = &a, *q = &a;

printf("%d %d\n", *p++, *(q++));

p = &a;
q = &a;

printf("%d %d\n", *p, (*q)++);
return 0;
}

类型转换

1. int to char

int a = 1; char b = a+'0';

2. char to int

C语言中每一个字符都是一个数字(ANSII码),int to char 只要减 ‘0’ 就好。char在技术实现上是整数类型,

char a = '1'; int b = a-'0';

待续。

函数

  • scanf()函数返回的值为:按指定格式正确地输入变量的个数。具有短路性质,即当第n个变量输入错误时,返回n-1,而不对之后的变量正确性做判断。出错时则返回EOF(-1)。

集合

set和multiset会根据特定的排序准则,自动将元素进行排序。不同的是后者允许元素重复而前者不允许。