一. ASCII码
可以在ununtu下查找ASCII码表:
man ASCII
功能:ascii - ASCII character set encoded in octal, decimal, and hexadecimal
字符 转换为 八进制 十进制 十六进制
最好能记住下面这几个:
Oct Dec Hex Char
000 0 00 NULL '\0' -> (空白,什么都没有)
060 48 30 0
101 65 41 A
141 97 61 a
printf()函数输出格式
%d | 以十进制形式输出内容。 |
---|---|
%o | 以八进制形式输出内容。 |
%x | 以十六进制形式输出内容。 |
%c | 以字符形式输出内容。 |
%f | 输出浮点型数据 |
%s | 输出字符串 |
%p | 输出指针地址 |
例:
#include <stdio.h>
int main(int argc,char *argv[])
{
int a = 65;
char b = '0';
printf("a = %d\n",a); //65
printf("a = %o\n",a); //101
printf("a = %x\n",a); //41
printf("a = %c\n",a); //A
printf("b = %d\n",b); //48
printf("b = %o\n",b); //060
printf("b = %x\n",b); //30
printf("b = %c\n",b); //'0'
return 0;
}
输出结果如下:
/mnt/hgfs/1.22 Ubuntu-14.4share/C/daily --> :gcc -o printf printf.c
/mnt/hgfs/1.22 Ubuntu-14.4share/C/daily --> :./printf
a = 65
a = 101
a = 41
a = A
b = 48
b = 60
b = 30
b = 0
二. 标准C库IO函数
printf() -> 输出某段内存空间上值。
scanf() -> 从键盘中获取一些值,将这些值存放到某些内存空间上。
#include <stdio.h>
int main(int argc,char *argv[])
{
int a;
scanf("%d",&a); // 从键盘获取一个十进制数据,并存放在变量a对应的空间上
printf("a = %d\n",a); // 将a变量对应的空间的数据输出
printf("&a = %p\n",&a); // 将a变量的空间地址输出
return 0;
}
/mnt/hgfs/1.22 Ubuntu-14.4share/C/daily --> :./IO
10
a = 10
&a = 0x7fffc081606c
三.逗号表达式
计算规则:从左到右依次计算,结果以最后一个表达式为准。
例:
#include<stdio.h>
int main(int argc, char *argv[])
{
int a=1,b=5,c=10,d;
d = (a=a+b,c=b+c,a+c); //a=1+5 -> 6 c=5+10 -> 15 6+15 -> 21
printf("d = %d\n", d); //21
return 0;
}
/mnt/hgfs/1.22 Ubuntu-14.4share/C/daily --> :gcc -o douhao douhao.c
/mnt/hgfs/1.22 Ubuntu-14.4share/C/daily --> :./douhao
d = 21
此处举一个对我来说有点特殊的例子,因为最开始我无法理解为什么有括号还是会得出这个值:
#include<stdio.h>
int main(int argc, char *argv[])
{
int a=1,b=2,c=3,d;
d = (c=a+3,b-=a,b++);//1 // b=1 先将b的值赋值给d,然后再自身+1
printf("%d\n", d);
return 0;
}
/mnt/hgfs/1.22 Ubuntu-14.4share/C/daily --> :gcc -o douhao2 douhao2.c
/mnt/hgfs/1.22 Ubuntu-14.4share/C/daily --> :./douhao2
1
此处是先将b的值赋值给d,然后再执行的++。括号的含义表示将括号内的三个表达式放在一起而已,并无其它含义。
四. 三目运算
三目运算表达式形式:
表达式 ? 结果1 : 结果2;
如果表达式为真,则结果就是结果1。
如果表达式为假,则结果就是结果2。
例:
#include<stdio.h>
int main(int argc, char *argv[])
{
int a=1,b=2,c;
c = (a>b?a:b); // 求出a与b之间的最大值。
printf("%d\n", c);
return 0;
}
/mnt/hgfs/1.22 Ubuntu-14.4share/C/daily --> :gcc -o three three.c
/mnt/hgfs/1.22 Ubuntu-14.4share/C/daily --> :./three
2