C Prim plus

编译器运行链接器(linker)将标准库(eg:printf() scanf())例程引入代码。

目标文件只包含我们所写的代码生成的机器语言,而可执行文件还包含库代码和启动代码生成的机器语言。

编译和链接的区别就在这里。

 ---------------------------------------

在某些编译器中,如果显示执行窗口在执行时突然消失,可以考虑加上这一行代码:getChar();

 

#include <>与#include ""区别:

<>先去系统目录中找头文件,如果没有在到当前目录下找。所以像标准的头文件 stdio.h、stdlib.h等用这个方法。
而""首先在当前目录下寻找,如果找不到,再到系统目录中寻找。 这个用于include自定义的头文件,让系统优先使用当前目录中定义的。 

--------------------------------------------

格式字符串

在Turbo C中格式字符串的一般形式为:
    [标志][输出最小宽度][.精度][长度]类型。
其中方括号[]中的项为可选项。

各项的意义介绍如下。

1) 类型
类型字符用以表示输出数据的类型,其格式符和意义如下表所示:

格式字符意义
d 以十进制形式输出带符号整数(正数不输出符号)
o 以八进制形式输出无符号整数(不输出前缀0)
x,X 以十六进制形式输出无符号整数(不输出前缀Ox)
u 以十进制形式输出无符号整数
f 以小数形式输出单、双精度实数
e,E 以指数形式输出单、双精度实数
g,G 以%f或%e中较短的输出宽度输出单、双精度实数
c 输出单个字符
s 输出字符串
 

 

3) 输出最小宽度
用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。

4) 精度
精度格式符以“.”开头,后跟十进制整数。本项的意义是:如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。

5) 长度
长度格式符为h、l两种,h表示按短整型量输出,l表示按长整型量输出。

#include <stdio.h>

int main(int argc, char* argv[])
{
    int number, temp;

    //scanf("%d, %d", &number, &temp);//36, 26

    number = 36;
    printf("8进制:%o\n", number);
    printf("10进制:%d\n", number);
    printf("16进制:%x\n", number);
    printf("16进制:%X\n", number);
    printf("\n");

    float f = 2.5555555f;
    printf("f:%f\n", f);  //2.555556
    double d = 2.5555555;
    printf("d:%lf\n", d); //2.555556  ?
    printf("\n");

    number = 36;
    printf("8进制:%#o\n", number);  //044
    printf("10进制:%#d\n", number); //36
    printf("16进制:%#x\n", number); //0x24
    printf("16进制:%#X\n", number); //0X24

    unsigned temp1 = 100;
    printf("temp1:%u\n", temp1);

    long temp2 = 123;
    printf("temp2:%ld\n", temp2);
    printf("\n");

    int temp3 = 55;
    printf("temp3:%4d\n", temp3);//temp3:  55
    temp3 = 555;
    printf("temp3:%4d\n", temp3);//temp3: 555
    temp3 = 5555;
    printf("temp3:%4d\n", temp3);//temp3:5555
    temp3 = 55555;
    printf("temp3:%4d\n", temp3);//temp3:55555
    printf("\n");

    f = 3.5555555f;//显然这里被截断了f=3.555556
    //printf("f:%n\n", f);//warning 如果强行运行输出结果是将float截断为整型数据来确定的,一般不是(int)(f)
    printf("f:%3f\n", f);  //f:3.555556
    printf("f:%8f\n", f);  //f:3.555556
    printf("f:%9f\n", f);  //f: 3.555556
    printf("f:%4.3f\n", f);//f:3.556
    printf("f:%4.2f\n", f);//f:3.56
    printf("f:%5.2f\n", f);//f: 3.56
    printf("\n");

    char aChar = 'a';
    printf("aChar:%c\n", aChar);

    char charArray[] = "123456";
    printf("charArray:%s\n", charArray);

    temp =10;
    return 0;
}
int main(void) 
{
    int a = 015;
    printf("a:%5d$\n", a); //___13$
    printf("a:%-5d$\n", a);//13___$

    long b = 57;
    printf("b:%ld\n", b);  //b:57
    printf("b:0x%lo\n", b);//b:0x71

    char str[] = "12345";
    printf("%3s,%7.2s,%.4s,%-5.3sk\n", str, str, str, str, str);//12345,_____12,1234,123__

    return 0; 
}

 ----------------------

<ctype.h>中定义的函数

标准C函数定义, 函数功能简介

int isalnum(int c), 检查字符是否是字母或数字

int isalpha(int c), 检查字符是否是字母

int isascii(int c), 检查字符是否是ASCII码

int iscntrl(int c), 检查字符是否是控制字符

int isdigit(int c), 检查字符是否是数字字符

int isgraph(int c), 检查字符是否是可打印字符

int islower(int c), 检查字符是否是小写字母

int isprint(int c), 检查字符是否是可打印字符

int ispunct(int c), 检查字符是否是标点字符

int isspace(int c), 检查字符是否是空格符

int isupper(int c), 检查字符是否是大写字母

int isxdigit(int c), 检查字符是否是十六进制数字字符

int toupper(int c), 将小写字母转换为大写字母

int tolower(int c), 将大写字母转换为小写字母

atoi (表示 alphanumeric to integer)是把字符串转换成长整型数的一个函数

atol(const char*)

atof(const char*)

----------------------------------

 

#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL

 

    public static void main(String[] args) {

        int a = 0x1c; // 1 1100
        int b = 0x16; // 1 0110

        System.out.println(Integer.toBinaryString(a));
        System.out.println(Integer.toBinaryString(b));

//按位与
int c = a & b; // 1 0100 System.out.println(Integer.toBinaryString(c));
//按位或
int d = a | b; // 1 1110 System.out.println(Integer.toBinaryString(d));
//按位取反
int e = ~a; // 11111111111111111111111111100011 System.out.println(Integer.toBinaryString(e));
//按位异或
int f = a ^ b; // 1010 System.out.println(Integer.toBinaryString(f)); }

 

强制类型转换符:()

下标运算符:[]

分量运算符:. ->

条件运算符: x = a > b ? a : b;

运算符优先级: 算术运算符 > 关系运算符 > 赋值运算符

 

 

(3) 从变量值存放的位置来区分,可分为:

内存中静态存储区:      |静态局部变量

                                  |静态外部变量(函数外部静态变量)

                                  |外部变量(可为其他文件引用)

内存中动态存储区: 自动变量和形式参数

CPU中的寄存器:寄存器变量

----------------------------------------------------------

函数指针:

#include<stdio.h>

int max(int a, int b) {
    if (a > b) {
        return a;
    } else {
        return b;
    }
}

void main() {
    printf("sdfd\n");

    int (*f)(int a, int b);
    f = max;

    int t = f(3, 100);
    printf("max:%d", t);
}

 

 

#include<stdio.h>c
void test1() 
{
    int a[5] = {1, 7, 3, 4, 5};
    int *p = (int*)(&a +1); 
    printf("%d, %d  \n", p, *p); 
    printf("%d, %d\n", *(a+1), *(p-1)); //7 5
}

void test2()
{
    int a =3, b = 4;
    int c = 7;
    c *= a + b;
    printf("c:%d\n", c);  //49

    char t = 'a';
    printf("size: %d\n", sizeof(c));  // 4
    printf("char size: %d\n", sizeof(t)); // 1

  
    char y[10] = "SDFIDSP";
    printf("y[10] size: %d\n", sizeof(y)); // 10

    char ss[] = "123456";
    printf("ss size: %d\n", sizeof(ss)); //7

    char *d = y;
    printf("d size: %d\n", sizeof(d)); // 4
}

void main() {

    test1();
    int a = 1;
    a = ~a;
    
    printf("b_a: %d\n", a); // -2
    
}

 

posted @ 2015-02-28 10:35  牧 天  阅读(334)  评论(0)    收藏  举报