'0'是个字符,其内部表示则与平台有关,比如为48;我要从终端c=getchar(),得到一个数字,则'c'-'0'才能得到想要的那个数字
乘法运算符“*”双目运算,具有左结合性。
除法运算符“/”双目运算具有左结合性。参与运算量均为整型时, 结果也为整型,舍去小数。如果运算量中有一个是实型,则结果为双精度实型。
void main(){
printf("/n/n%d,%d/n",20/7,-20/7);
printf("%f,%f/n",20.0/7,-20.0/7);
}
双目运算具有左结合性。参与运算量均为整型时, 结果也为整型,舍去小数。如果运算量中有一个是实型,则结果为双精度实型。 printf("/n/n%d,%d/n",20/7,-20/7);
printf("%f,%f/n",20.0/7,-20.0/7);
本例中,20/7,-20/7的结果均为整型,小数全部舍去。而20.0/7和-20.0/7由于有实数参与运算,因此结果也为实型。
实型变量分为两类:单精度型和双精度型;实型常数不分单、双精度,都按双精度double型处理。
被调用函数接收的是变量的私有的临时拷贝,被调用函数不能影响调用者的原变量。但是如果数组名出现在函数的参数中,那是将数组的起始地址传给参数的,于是被调用函数可以改变数组元素的值,这就是予数组是传地址的。
字符数组的初始化:
char pattern[]=”the”;
相当于:
char pattern[]={‘t’,’h’,’e’,’/
0’
};
大小为4
*是取内容运算 &是取地址运算
C语言没有专门定义字符串数据类型(如其他语言中的string),它用以'/0'结尾的字符数组来表示一个逻辑意义上的字符串。C语言用一些对于字符数组的处理函数(特别是对以'/0'结尾的字符数组的处理函数)来处理所谓的以'/0'结尾的字符串,并把他们放在string.*、stdio.*等一些标准库文件中。 为什么传一个char *指针给printf(),strlen()之类的函数,它就能把它当作一个字符串来处理呢?没错,我们不是定义了'/0'来表示一个"字符串"的终结么?我们只需从起始地址不断累加,遍历字符数组的每一个元素,直到找到一个'/0'为止,就算是处理一个字符串了——从起始地址到'/0'为止的字符数组元素构成一个“字符串”,这就是C语言设计字符串的原理。
EOF:end of file(猜的)。在windows下是ctrl+z, 再enter;在linux是ctrl+d
Putchar/getchar与putc/getc都是宏而不是函数