- 合法語句
! 優先級大於 ==
{
int a=2;
+a;
}
(int)3.14;
(int)(3.14);
(float)3;
(float)(3); //類推
float < int; //不同類型數據大小比較
int a=2,b=3;
int a1 = (!a); //0
int a2 = (!b==0); //先運算 !b 得 0;==》 a2值爲1
int main()
{
int i=1;
for(i;i++<4;);
printf("%d",i); //5
}
#include<stdio.h>
#include<string.h>
int main()
{
int x=1,y=0,a=0,b=0;
switch(x)
{
case 1:
a++; //沒有break的話 不管條件 執行下一個case;
case 2:
a++;b++;break;
case 3:
a++;b++;
}
printf("%d %d",a,b); 2 1;
}
- 非法語句
{
int a=2;
a+;
} - 字符數組
{
char s[]=”123\n4\n”;
sizeof(s); // 7 “”型末尾自動加’\0’
strlen(s) // 6 元素個數
}
關於 sizeof()
第一個例子: char* ss = “0123456789”;
sizeof(ss) 結果 4 ===》ss是指向字符串常量的字符指針
sizeof(*ss) 結果 1 ===》*ss是第一個字符
char ss[] = “0123456789”;
sizeof(ss) 結果 11 ===》ss是數組,計算到\0位置,因此是10+1
sizeof(*ss) 結果 1 ===》*ss是第一個字符
char ss[100] = “0123456789”;
sizeof(ss) 結果是100 ===》ss表示在內存中的大小 100×1
int ss[100] = “0123456789”;
sizeof(ss) 結果 400 ===》ss表示在內存中的大小 100×4
char q[]=”abc”;
char p[]=”a\n”;
sizeof(q),sizeof(p),strlen(q),strlen(p);
結果是 4 3 3 2
#include<stdio.h>
#include<string.h>
void fun(char s[]);
int main()
{
int a;
float b;
char c;
char s[]="hello";
char *p = s;
int aa = sizeof(a); //4
int bb = sizeof(b); //4
int cc = sizeof(c); //1
int dd = sizeof(s); //5+1
int ee = sizeof(p); //指針大小 4
fun(s);
}
void fun(char s[])
{
int ee = sizeof(s); //此時s相當於指針 4
}
關於strlen()
strlen(…)是函數,要在運行時才能計算。參數必須是字符型指針(char*)。當數組名作爲參數傳入時,實際上數組就退化成指針了。
它的功能是:返回字符串的長度。該字符串可能是自己定義的,也可能是內存中隨機的,該函數實際完成的功能是從代表該字符串的第一個地址開始遍歷,直到遇到結束符NULL。返回的長度大小不包括NULL。
4. 數組類型
32位/64位處理器 int型 4字節 有符號普通整型 -2的31次方~2的31次方-1
- 隨機數
#include<stdio.h>
#include<time.h>
void main()
{
srand((int)time(0));
int MAX=10;
int MIN=1;
int cc = rand() % (MAX + 1 - MIN) + MIN;;
printf("%d ",cc);//產生從[MIN,MAX]間的隨機數
}
引用:http://blog.csdn.net/liushuijinger/article/details/7429197
原碼:
如果機器字長爲n,那麼一個數的原碼就是用一個n位的二進制數,其中最高位爲符號位:正數爲0,負數爲1。剩下的n-1位表示概數的絕對值。
例如: X=+101011 , [X]原= 00101011 X=-101011 , [X]原= 10101011
位數不夠的用0補全。
PS:正數的原、反、補碼都一樣:0的原碼跟反碼都有兩個,因爲這裏0被分爲+0和-0。
反碼:
知道了什麼是原碼,那反碼就更是張飛吃豆芽——小菜一碟了。知道了原碼,那麼你只需要具備區分0跟1的能力就可以輕鬆求出反碼,爲什麼呢?因爲反碼就是在原碼的基礎上,符號位不變其他位按位取反(就是0變1,1變0)就可以了。
例如:X=-101011 , [X]原= 10101011 ,[X]反=11010100
補碼:
補碼也非常的簡單就是在反碼的基礎上按照正常的加法運算加1。
例如:X=-101011 , [X]原= 10101011 ,[X]反=11010100,[X]補=11010101
PS:0的補碼是唯一的,如果機器字長爲8那麼[0]補=00000000。
- 疑難點
函數類型缺省,默認類型爲 int
指針類型與所指類型一定要相同!!!!