雨宫琴音电影|杏吧直播app官方下载|蕾丝小内内被撕开强入|影音先锋资源|国产 高速 亚洲 欧美 在线|今夜无人入睡免费完整版|97精品视频播放

當前位置:第一POS網 > 刷卡機知識點2 >

刷卡機的ec1

瀏覽:71 發布日期:2023-05-29 00:00:00 投稿人:佚名投稿

網上關于刷卡機的ec1的刷卡知識比較多,也有關于刷卡機的ec1的問題,今天第一pos網(m.fzog.com.cn)為大家整理刷卡常見知識,未來的我們終成一代卡神。

本文目錄一覽:

1、刷卡機的ec1

刷卡機的ec1

1966 年 Bohm和Jacpini用數學方法證明了只用三個結構和任意數量的布爾型標志就能表示任何算法。這三種結構是

1 順序;

2 選擇(例如,if-else,if-else if,switch);

3 循環(例如,whuile,for,do)。

對于選擇結構,由于if…else if 還是不夠簡潔,switch 就應運而生了,他跟if else if 互為補充關系。switch 提供了點的多路選擇。

偽代碼:

switch(expression) // expression表達式的值需是整型{ case 整形常量1: 代碼塊1; break; case 整形常量2: 代碼塊2; break; default: 代碼塊3; break;// 此處的break 可以省略}

switch與if…else if的比較實例:

#include <stdio.h>bool IsLeapYear(int y)// 判斷是否為閏年{return((y%4==0&&y0!=0)||y@0==0);}int DaysOfMonth(int month,int year)// 判斷某月天數的函數{switch(month){case 1:case 3:case 5:case 7:case 8:case 10:case 12:return 31;case 4:case 6:case 9:case 11:return 30;case 2:if(IsLeapYear(year)) return 29; else return 28; default: //return 31; //也可以把上面31天的部分放到這里 break;}return 0;}int DaysOfMonth2(int month,int year)// 判斷某月天數的函數{ if(month==2) { if(IsLeapYear(year)) return 29; else return 28; } else if(month==4 || month == 6 || month == 9 || month == 11) return 30; else return 31;}int main(){ int i; for(i=0;i<12;i++) printf("%d ",DaysOfMonth(i+1,2021)); printf("\"); for(i=0;i<12;i++) printf("%d ",DaysOfMonth2(i+1,2022)); getchar(); return 0;}1 整數類型表達式和整數類形常量

expression表達式的值需是整數類型,其值被各個case語句枚舉(通常expression本身就是一個枚舉變量),也就是每個case標簽必須是整數類型常量表達式(constant-expression),指在編譯期間進行求值的表達式, 它不能是任何變量。

這里的整數類型包括:short, int ,long, char, enum, bool。

2 case只是一個進入點,非整個swich的的退出點

case只負責入口(或進入點)的作用,也就是直落(fall-through)的概念。如要跳出整個which,需要額外的break語句。

在switch語句中,當找到與swith表達式相等的case時,執行case下的語句。case下的所有語句都執行完成后,如果一直沒有break,那么程序將會執行到下一個case,而不管它的值是否與switch表達式相等,即多個case之間不具有天然的互斥性。要想使程序執行完一個case后的語句,而不進入下一個case,必須使用break語句,使程序退出switch結構。這樣,后面的case也就不執行了。

C語言中switch語句比較特殊,一個分支的結束是依賴break完成的。case只決定—序到哪里執行,而不決定到哪里結束。結束位置由break來決定,沒有break就一直執行到switch完整結構結束。

這種“入口”機制自然有其理由所在,如果某幾個case語句后都是同樣的語句,就沒必要重復寫,由幾個case語句提供入口,同樣的語句寫一次就行了,如判斷某年小月(30天)的判定:

case 4:case 6:case 9:case 11: days = 30;break;

或者:

switch( ch ){case '\': lines += l; /* FALL THRU */case ' ':case '\ ': words += l; /* FALL THRU */default: chars += l;}3 直接跳轉

通常,由switch語句進入某個case,是直接跳轉(jmp),并不需要逐個比較,逐個進入。其后面是由編譯器維護了一份跳轉表。之所以能這樣操作,也與上述的第1點有關,expression表達式的值枚舉到了各個case中,其值都是以整數類型常量存在的,其跳轉的間隔在編譯期就是已經確定的。這也是其執行效率要高于同等實現的if語句的原因。

直接跳轉的實現的匯編(通過jmp匯編指令):

9: switch(month){004010C8 mov eax,dword ptr [ebp+8]004010CB mov dword ptr [ebp-4],eax004010CE mov ecx,dword ptr [ebp-4]004010D1 sub ecx,1004010D4 mov dword ptr [ebp-4],ecx004010D7 cmp dword ptr [ebp-4],0Bh004010DB ja $L538+23h (00401118)004010DD mov edx,dword ptr [ebp-4]004010E0 jmp dword ptr [edx*4+40112Bh]10: case 1:11: case 3:12: case 5:13: case 7:14: case 8:15: case 10:16: case 12:return 31;004010E7 mov eax,1Fh004010EC jmp $L538+25h (0040111a)17: case 4:18: case 6:19: case 9:20: case 11:return 30;004010EE mov eax,1Eh004010F3 jmp $L538+25h (0040111a)21: case 2:if(IsLeapYear(year))004010F5 mov eax,dword ptr [ebp+0Ch]004010F8 push eax004010F9 call @ILT+5(IsLeapYear) (0040100a)004010FE add esp,400401101 and eax,0FFh00401106 test eax,eax00401108 je $L538+1Ch (00401111)22: return 29;0040110A mov eax,1Dh0040110F jmp $L538+25h (0040111a)23: else24: return 28;00401111 mov eax,1Ch00401116 jmp $L538+25h (0040111a)25: default:26: //return 31; //也可以把上面31天的部分放到這里27: break;28: }29: return 0;00401118 xor eax,eax30: }

switch case結構的優點是對分支條件只進行一次判斷就可以決定代碼的分支流程。但是缺點就是不能進行復雜的條件判斷。

4 switch語句內聲明局部變量的問題

因為case 語句只是標簽,它們共屬于一個swtich語句塊。其聲明的變量所在的case部分需要用大括號{}來明確其作用域。

#include<stdio.h>void swap(int *a,int *b);int main(){ char casen ; scanf("%c",&casen); switch(casen) { case 'a' : //shutdown(); break; case 'b' : //leapyear(); break; case 'c' :// 參數的引用傳遞 { // 未使用大括號有些編譯器會報錯 int a, b; a = 10; b = 20; swap(&a,&b); printf("%d %d\",a,b); break; } case 'd' : //isprime(); break; case 'e' : //fac(); break; } return 0;}void swap(int *a,int *b){ int t = *a; *a = *b; *b = t;}

-End-

以上就是關于刷卡機的ec1的知識,后面我們會繼續為大家整理關于刷卡機的ec1的知識,希望能夠幫助到大家!

轉載請帶上網址:http://m.fzog.com.cn/shuakatwo/169797.html

版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 babsan@163.com 舉報,一經查實,本站將立刻刪除。
聯系我們
訂購聯系:小莉
微信聯系方式
地址:深圳市寶安區固戍聯誠發產業園木星大廈

公司地址:深圳市寶安區固戍聯誠發產業園木星大廈

舉報投訴 免責申明 版權申明 廣告服務 投稿須知 技術支持:第一POS網 Copyright@2008-2030 深圳市慧聯實業有限公司 備案號:粵ICP備18141915號