c 附加

                                                                                       概述

    C是一种强大、简洁的编程语言。之所以流行是因为它提供了有用的编程工具和对硬件良好的控制,还因为C程序在一个系统到另一个系统的移植方面比大多出程序更容易。

    C是一种需要编译的语言。C编译器和连接器是将C语言源代码转换为可执行代码的程序。

    C语言程序是由一个或者多个函数组成的。每个C程序都必须包含一个名为main()的函数,因为当程序开始时要调用该函数。

    每个C语句都是一个针对计算机的指令,并以一个分号作为结束标志。

    语法错误为违反语言规则,语义错误为逻辑错误(在编译和链接时都不会报错)。

                                                                                         数据和运算符

     编译器采用的数据模型:http://my.oschina.net/u/347414/blog/167756

     整型数据平台通用性:http://blog.csdn.net/kongdefei5000/article/details/38866985

    大端小端转换:http://blog.csdn.net/yeyuangen/article/details/9092717

    程序内存中的堆栈:http://blog.sina.com.cn/s/blog_6c7c0f0b01013rjy.html

    格式说明符: http://blog.sina.com.cn/s/blog_55036ca4010002th.html

    转义字符: http://www.cnblogs.com/emanlee/archive/2010/05/14/1735274.html

    强制类型转换:http://www.cnblogs.com/CBDoctor/archive/2011/12/06/2277918.html

    运算符的优先级:

    整型溢出 函数的声明

    C语言中常量后缀可以使用大写和小写hl fl,但格式说明符只能使用小写字母 ubodx。

   const和define的区别:http://blog.sina.com.cn/s/blog_79b01f6601018xdg.html

                                                                                   数组,指针,函数

    int sum(int a[], int b[][4]); []中可以写数字

    float rain[5][12]; 5个由12浮点数数组组成的数组

    对形式参数使用const,const修饰变量   指针允许各种强制类型转换但无隐式

<string.h>

void *(memset) (void *s, int c, size_t n); /*store c throughout unsigned char s[n]*/

{

const unsigned char cuc = c;

unsigned char *uc;

 

for ( uc = s; 0 < n; ++uc, --n)

*uc = cuc;

return s;

}

void *(memcpy) (void *s1, const void *s2, size_t n)/*copy char s2[n] to s1[n] in any order*/

{

char *su1;

const char* su2;

 

for(sus = s1, su2 = s2; 0 < n; ++su1, ++su2, --n)

*su1 = *su2

return (s1)

}

char *(strncpy) (char *s1, const char *s2, size_t n)/*copy char s2[max n] to s1[n]*/

{

char *s;

 

for(s = s1; 0 < n && *s2 != '\n'; --n)

*s++ = *s2++;

for (; 0 < n; --n)

*s++ = '\n';

return (s1);

}

char *(strcpy) (char *s1, const char *s2) /*const char s2[] to s1[]*/

{

char *s = s1;

 

for (s = s1; (*s++ = *s2++) != '\0';)

;

return (s1);

}

size_t (strlen) (const char *s) /*find length of s[]*/

{

const char *sc;

for (sc = s; *sc != '\0'; ++sc)

;

return (sc - s);
}

 

char *(strncat) (char *s1, const char *s2, size_t n);/*copy char s2[max n] to end of s1[]*/

{

char *s;

 

for ( s = s1; *s != '\n'; ++s)

;

for ( ; 0 < n && s2 != '\0'; --n)

*s++ = *s2++;

*s = '\0'

return (s1);

}

 其他:编码,左移右移

 

UTF-8 标准写法 

utf8 MySQL的命令模式中(仅)

字符编码:

ASCII:256状态,一个字节

非ASCII:简体中文GB2312,2个字节表示一个汉字;其他语言不管了

Unicode:一个符号集,只规定了符号的二进制代码,没规定如何存储。容纳世界上100多万符号,可查询unicode.org

UTF-8:使用最广的一种Unicode的实现方式(UTF-16 二或四字节;UTF-32用4字节)

UTF-8介绍:

特点:一种变长的编码昂视,可使用1-4个字节表示一个符号

编码规则:前两位单字节符号,第一位为0,后七位为unicode码;对于n>1符号,第一个字节前n位为1,第n+1位为0;后面字节前两位一律为10;剩下的为unicode码。

编码使用(Notepad.exe)

ANSI: 英ASCII; 简中GB2312;繁Big5码;(big endian)

Unicode: UCS-2用两个字节存入字符的Unicode; (little endian)

Unicode: bigendian

UTF-8: 和实际存储顺序相关

 

左移右移

左移:按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。

右移:按二进制形式把所有的数字向右移动对应的位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1;无符号位补ling

 

 

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值