读《C语言高级实用编程技巧》备忘

    技术2022-05-11  56

    '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;在linuxctrl+d

    Putchar/getcharputc/getc都是宏而不是函数

     

    最新回复(0)