這是C語(yǔ)言中的“右移運(yùn)算符”。一般情況下,他是按位操作。
創(chuàng)新互聯(lián)是專業(yè)的伊川網(wǎng)站建設(shè)公司,伊川接單;提供成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行伊川網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
特點(diǎn):1.雙目運(yùn)算符,就像+、-、*、/一樣,格式為(數(shù)1)(數(shù)2)
2.數(shù)1是被操作數(shù),如被減數(shù)、被除數(shù)等;數(shù)2是右移位數(shù)。
3.優(yōu)先級(jí)低,結(jié)合性:從左向右運(yùn)算
如:81=?表示將被移數(shù)向右移動(dòng)1位
如何操作?
1.化十進(jìn)制數(shù)為(注意了)對(duì)應(yīng)的二進(jìn)制數(shù),對(duì)應(yīng)指格式對(duì)應(yīng)
2.通通右移,不足補(bǔ)0
3.化為十進(jìn)制數(shù)
舉例:short int a=8;a=a1;
1.a=0 000 1000
2.右移一位后:a= 0 000 100
3.補(bǔ)0:a=0 000 0100
4.化為十進(jìn)制數(shù):a=4
舉例:int a=8;a=a1;
1.a=0 000 0000 0000 1000
2.右移一位后:a= 0 000 0000 0000 100
3.補(bǔ)0:a=0 000 0000 0000 0100
4.化為十進(jìn)制數(shù):a=4
stat(取得文件狀態(tài))
相關(guān)函數(shù) fstat,lstat,chmod,chown,readlink,utime
表頭文件 #include sys/stat.h
#include unistd.h
定義函數(shù) int stat(const char * file_name,struct stat *buf);
函數(shù)說(shuō)明 stat()用來(lái)將參數(shù)file_name所指的文件狀態(tài),復(fù)制到參數(shù)buf所指的結(jié)構(gòu)中。
下面是struct stat內(nèi)各參數(shù)的說(shuō)明
struct stat
{
dev_t st_dev; /*device*/
ino_t st_ino; /*inode*/
mode_t st_mode; /*protection*/
nlink_t st_nlink; /*number of hard links */
uid_t st_uid; /*user ID of owner*/
gid_t st_gid; /*group ID of owner*/
dev_t st_rdev; /*device type */
off_t st_size; /*total size, in bytes*/
unsigned long st_blksize; /*blocksize for filesystem I/O */
unsigned long st_blocks; /*number of blocks allocated*/
time_t st_atime; /* time of lastaccess*/
time_t st_mtime; /* time of last modification */
time_t st_ctime; /* time of last change */
};
st_dev 文件的設(shè)備編號(hào)
st_ino 文件的i-node
st_mode 文件的類型和存取的權(quán)限
st_nlink 連到該文件的硬連接數(shù)目,剛建立的文件值為1。
st_uid 文件所有者的用戶識(shí)別碼
st_gid 文件所有者的組識(shí)別碼
st_rdev 若此文件為裝置設(shè)備文件,則為其設(shè)備編號(hào)
st_size 文件大小,以字節(jié)計(jì)算
st_blksize 文件系統(tǒng)的I/O 緩沖區(qū)大小。
st_blcoks 占用文件區(qū)塊的個(gè)數(shù),每一區(qū)塊大小為512 個(gè)字節(jié)。
st_atime 文件最近一次被存取或被執(zhí)行的時(shí)間,一般只有在用mknod、utime、read、write與tructate時(shí)改變。
st_mtime 文件最后一次被修改的時(shí)間,一般只有在用mknod、utime和write時(shí)才會(huì)改變
st_ctime i-node最近一次被更改的時(shí)間,此參數(shù)會(huì)在文件所有者、組、權(quán)限被更改時(shí)更新先前所描述的st_mode 則定義了下列數(shù)種情況
S_IFMT 0170000 文件類型的位遮罩
S_IFSOCK 0140000 scoket
S_IFLNK 0120000 符號(hào)連接
S_IFREG 0100000 一般文件
S_IFBLK 0060000 區(qū)塊裝置
S_IFDIR 0040000 目錄
S_IFCHR 0020000 字符裝置
S_IFIFO 0010000 先進(jìn)先出
S_ISUID 04000 文件的(set user-id on execution)位
S_ISGID 02000 文件的(set group-id on execution)位
S_ISVTX 01000 文件的sticky位
S_IRUSR(S_IREAD) 00400 文件所有者具可讀取權(quán)限
S_IWUSR(S_IWRITE)00200 文件所有者具可寫入權(quán)限
S_IXUSR(S_IEXEC) 00100 文件所有者具可執(zhí)行權(quán)限
S_IRGRP 00040 用戶組具可讀取權(quán)限
S_IWGRP 00020 用戶組具可寫入權(quán)限
S_IXGRP 00010 用戶組具可執(zhí)行權(quán)限
S_IROTH 00004 其他用戶具可讀取權(quán)限
S_IWOTH 00002 其他用戶具可寫入權(quán)限
S_IXOTH 00001 其他用戶具可執(zhí)行權(quán)限
上述的文件類型在POSIX 中定義了檢查這些類型的宏定義
S_ISLNK (st_mode) 判斷是否為符號(hào)連接
S_ISREG (st_mode) 是否為一般文件
S_ISDIR (st_mode)是否為目錄
S_ISCHR (st_mode)是否為字符裝置文件
S_ISBLK (s3e) 是否為先進(jìn)先出
S_ISSOCK (st_mode) 是否為socket
若一目錄具有sticky 位(S_ISVTX),則表示在此目錄下的文件只能被該文件所有者、此目錄所有者或root來(lái)刪除或改名。
返回值 執(zhí)行成功則返回0,失敗返回-1,錯(cuò)誤代碼存于errno
錯(cuò)誤代碼 ENOENT 參數(shù)file_name指定的文件不存在
ENOTDIR 路徑中的目錄存在但卻非真正的目錄
ELOOP 欲打開的文件有過(guò)多符號(hào)連接問(wèn)題,上限為16符號(hào)連接
EFAULT 參數(shù)buf為無(wú)效指針,指向無(wú)法存在的內(nèi)存空間
EACCESS 存取文件時(shí)被拒絕
ENOMEM 核心內(nèi)存不足
ENAMETOOLONG 參數(shù)file_name的路徑名稱太長(zhǎng)
范例 #include sys/stat.h
#include unistd.h
mian()
{
struct stat buf;
stat (“/etc/passwd”,buf);
printf(“/etc/passwd file size = %d /n”,buf.st_size);
}
方法1.做成全局量
方法2.使用傳址的方式,將c作為參數(shù)傳遞給函數(shù)a
不過(guò)第2種方法需要注意一下c的生命期,不要在函數(shù)中的c已經(jīng)釋放了,
在a中還使用,這樣會(huì)造成異常
為了提高代碼的可讀性,推薦都是多以函數(shù)實(shí)現(xiàn)功能。函數(shù)本身需要傳入返回?cái)?shù)據(jù),那么aes加密函數(shù)就會(huì)把傳入的數(shù)據(jù)加密,然后通過(guò)返回值返回到變量里面。我們假設(shè)aes函數(shù)名字叫aes,那么我們就這樣調(diào)用:需要加密的數(shù)據(jù)是a。加密結(jié)果是result
int a = 000;
String result = aes(a);
result便是加密后的a
實(shí)際代碼會(huì)很復(fù)雜但是結(jié)構(gòu)是這樣的。
這個(gè)程序應(yīng)該滿足你的要求吧。
#include stdio.h
#include conio.h
int main(void)
{
while (1)
{
if (!kbhit())
printf("1");
else
{
char c = getch();
if (c == 'a')
{
putchar('2');
getch();
}
}
}
return 0;
}
獲取不到,函數(shù)名在連接時(shí)被替換成函數(shù)入口地址,實(shí)際運(yùn)行的程序中通常不存在函數(shù)名(PE文件如果有函數(shù)導(dǎo)出表則導(dǎo)出表中可能會(huì)記錄函數(shù)名)。變量名同理。
當(dāng)前名稱:c語(yǔ)言反射獲取函數(shù)信息,c語(yǔ)言實(shí)現(xiàn)反射機(jī)制
當(dāng)前鏈接:http://chinadenli.net/article20/hsceco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、網(wǎng)站收錄、軟件開發(fā)、云服務(wù)器、網(wǎng)站營(yíng)銷、定制開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)