0 前言:C语言 与 Java 数据类型的差别
C语言没有规定各种整数类型的 表示范围,但有默认值!
java规定了 17 种数据类型的范围
基本型 ( 或算术类型 ) 的数据类型分别是:
char、
short、short int、
int、long、long int、
long long、及对应无符号数据类型;
float、double、long double
分类
基本型 ( 或算术类型 ) | 枚举类型 ( 也是算术类型 ) | void 类型 | 派生类型 |
---|---|---|---|
1 整数类型 2 浮点类型 | 离散整数 | 其值不可用 | 指针、数组、结构、共用体、函数类型 |
0.1 常量
整数常量
进制 | 注意 |
---|---|
2 进制 | 0b、0B 开头 0b1010 |
8 进制 | 必须 0 开头 045623 |
10 进制 | 开头不能是 0,0 本身除外 198 |
16 进制 | 必须 0x、0X 开头 |
浮点常量
两类 | 结尾符号 |
---|---|
float | 结尾是 F、f |
double | 结尾是 D、d |
若无结尾符号,则默认 double
转义字符
例子 | 解释 |
---|---|
\r | 光标定位至 当前行开头 |
\n | 换行至 下一行开头 |
\t | 光标移动至下一个制表符位置 |
\b | 退格符号,不删除! \b\b是删除 |
1 空间、字节、取值范围
位数 个数 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
计数单位 | 个 100 | 十 101 | 百 102 | 千 103 | 万 104 | 十万 105 | 百万 106 | 千万 107 | 亿 108 | 十亿 109 | 百亿 1010 | 千亿 1011 |
0的个数 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
short ~ long long 输入输出:
大于 | 数据类型 | 小于 |
---|---|---|
3万 = 30000 | short short int | 40000 = 4万 |
109(十亿) | int long long int | 1010(百亿) |
1018 | long long | 1019 |
float、double、long double 的输入:
数据类型 | 小于等于 |
---|---|
float | 108 |
double | 1017 |
long double | 1020 |
float、double、long double 的输出:
大于 | 数据类型 | 小于 |
---|---|---|
1038 | float | 1039 |
10308 | double | 10308 |
104932 | long double | 104933 |
1.1 整型: 有符号(±) & 无符号(非负)
类型名 | 所占空间 (位) | 所占字节 | 取值范围 科学计数法 | 取值范围 十进制普通数 |
---|---|---|---|---|
char | 8 | 1 | - 27 ~ ( 27 - 1 ) | - 128 ~ 127 |
short short int | 16 | 2 | - 215 ~ ( 215 - 1 ) | - 32768 ~ 32767 ( 3万,5位数 ) |
int long long int | 32 | 4 | - 231 ~ ( 231 - 1 ) | -21 4748 3648 ~ 21 4748 3647 ( 20亿,10位数 ) |
long long | 64 | 8 | - 263 ~ ( 263 - 1 ) | -922 3372 0368 5477 5808 ~ 922 3372 0368 5477 5807 ( 19位数 ) |
----------- | ----------- | ----------- | ----------- | ----------- |
unsigned char | 8 | 1 | 0 ~ ( 28 - 1 ) | 0 ~ 255 |
unsigned short unsigned short int | 16 | 2 | 0 ~ ( 216 - 1 ) | 0 ~ 6 5535 ( 6万,5位数 ) |
unsigned int unsigned long unsigned long int | 32 | 4 | 0 ~ ( 232 - 1 ) | 0 ~ 42 9496 7295 ( 40亿,10位数 ) |
unsigned long long | 64 | 8 | 0 ~ ( 264 - 1 ) | 0 ~ 1844 6744 0737 0955 1615 ( 20位数 ) |
1.2 浮点型
下面3个类型均含有0
类型名 | 所占空间 (位) | 所占字节 | 取值范围 | |
float | 32 | 4 | 负数范围 - 3.4E+38 ~ - 1.17E-38 | - FLT_MAX(39位数) ~ - FLT_MIN |
正数范围 1.17E-38 ~ 3.4E+38 | FLT_MIN ~ FLT_MAX(39位数) | |||
double | 64 | 8 | 负数范围 - 1.797E+308 ~ - 2.225E-308 | - DBL_MAX(309位数) ~ - DBL_MIN |
正数范围 2.225E-308 ~ 1.797E+308 | DBL_MIN ~ DBL_MAX(309位数) | |||
long double | 128 | 16 | 负数范围 - 1.189E+4932 ~ - 3.36E-4932 | - LDBL_MAX(4933位数) ~ - LDBL_MIN |
正数范围 3.36E-4932 ~ 1.189E+4932 | - LDBL_MAX(4933位数) ~ - LDBL_MIN |
其中
x_MIN 和 x_MAX 均为正
浮点数数据类型 | 最小值(正数) | 最大值(正数) |
---|---|---|
float | FLT_MIN | FLT_MAX |
double | DBL_MIN | DBL_MAX |
long double | LDBL_MIN | LDBL_MAX |
他们具体数值(十进制,非科学计数法)
float:
FLT_MIN ( 37 个 0 后面有 89 位数 )
= 0.(37个0)
1175494350822287507968736537222245677818665556772087521508751706278417259454
7271728515625
FLT_MAX ( 小数点前有 39 位数 ) = 340282346638528859811704183484516925440.0
double:
DBL_MIN ( 307 个 0 后面有 715 位数 )
= 0.(307个0)
2225073858507201383090232717332404064219215980462331830553327416887204434813
9181958542831590125110205640673397310358110051524341615534601088560123853777
1882113077799353200233047961014744258363607192156504694250373420837525080665
0616658158948720491179968591639648500635908770118304874799780887753749949451
5804516050509153998565824708186451135379358049921159810857660519924333521143
5239014879569960959128889160299264151106346631339366347758651302937176204732
5631781485664350872122828637642044846811407613911477062801689853244110024161
4474216185671661505401542850847167529019031613227788967297073731233340869889
8317506783884692609277397797285865965494109136909540613646756870239867831529
0680984617210924625396728515625
DBL_MAX ( 小数点前有 309 位数 ) =
1797693134862315708145274237317043567980705675258449965989174768031572607800
2853876058955863276687817154045895351438246423432132688946418276846754670353
7516986049910576551282076245490090389328944075868508455133942304583236903222
9481658085593321233482747978262041447231687381771809192998812504040261841248
58368.00
long double:
LDBL_MIN
LDBL_MIN ( 4931 个 0 后面有 11451 位数 )
= 0.(4931个0)
3362103143112093506262677817321752602598079344846471240108827229808742699390
7289670430927063650562228625019066688234732270901114717276781407474941951906
3172916672639148499858621889449306874093231258318669985982748497715447171847
2731360102097109969846313544087646920079723924148002689793031875014798262534
2102921480784734670183910844877343074218035130735386727359319586864183119594
4159523420216434811847249184459743427980577174328754015453870392084141992070
1695124560415024569275649406699538900247595247695317321765067573103181597138
5312169349464407147507251828183432509530216565672119543732021214291185065959
4579655535231160444487479276839276148565796523221628879056815878852523028984
3003839164543067501319028825538561964321713076214022903129343482836736176490
0794271003752441808130400922610625259498709247351358206365850547331123745239
5518656729064541950664136519968310168014268728856897845692120508105233761566
0310204777901450849407460913217202483761020953437447153656595362436183663394
6082424911061380079367029527780610132541872124406677743897837558036437063651
1023554192001496405593631700816098211233440018931158604244544902185892090931
2031458785755128247723416172679973144751244562241433024432859336911914912321
4659454020198195234127338829319770515266439445556551333025153546219948962126
3019648736942233945856762485813474339594894555320118768302317292499939565404
3357602989174799539683828730885077297612105022593337485827358263516187570266
8268432647422400903439025451769081518836647226939357684503518718183054484676
7378125952990349916379424190994484313857358673936834482891757174767747152950
2448284418703026550942908376837671679083090288991714985198105668838862953817
5350813073924850241761982971069079934093126248589311033958605807006335376068
2450623110929655867024744189930402906091548294741545104608249683029616459879
4199010259172385318059635342911531175176750541825296660617261190908563227918
2382622037182038155917151536557064323930065527802124259315988688238008389941
4770055610324366815753207716580020144833879672405691208601962176702215731669
2546964139026311226211000027492605212462700980980242177030389734720351730651
1257993983220353090003290577614339184453996856749789316419544155611174617068
4331995340343128620392384851548088542943144807507721906775352687034954011083
0321845744960087227923732927565593308898829201610043188582422959222684334086
7411491081529218857248536527272599801825035025484543165136370427135656153232
9374863606373168437212629434399652878082486789051820914281785444959173190608
1321062782993695196160760170233481620289508327097719298590617105386738353627
1149507801466868345084242373660483846435627042818388973527686755441778052280
4829000794167687036668534042210421687773014161377089928320877054040742278920
7952017664300516891757193028911734195342358174491566162092027286566997657425
7095946317997765927992765038156052214323139785516097259851277458363424307307
0437003345373650604618405478515181881451150600344640473789119791535739201566
3495955719396405630089074548777885797096703056628857886557192731590593164923
0971366752107722556294095349844862058270958818523950097214032381490066179019
1286189320947634608958274014659791763546437035680512762687166617180745685252
3733978910082750774720037752659936382432766788384909274210255390027775284192
4351567409490219300946090053353096591562571137209996852946815969078995970594
9299768947236695214891325575812009972780490461210070545857009991601042367596
2321076240444577270118023947164461379165829426790115493061621854709818303115
4591036158063705491889840374218499937862460219799036376016609743217164996242
3813371739824471050391847989976748006920010822824906360328060708741702949308
9375636827784090379116081127229460597625002813462540535071488357312195767966
1230473916403545696225655841886336222732765707425848227004142069438565178683
1147019848115754795571560969197496769555523219877533853863631356416674010059
6890106091499936630711638122519421561598229526803034610502635775887383529394
2637634559469958195003656898704056524410685345793821185493149998174459307040
2469487902126897533894219252715402394267204133054852642929122997978165986591
6793694569805553963381911018933702776030454189058993771243254936587148282329
4982799271853547153211935653208934743329138748703814792265578252665346815280
9890540661225714023747990051992106739802423318738768437113038700758728297559
5603295689679737461989219641760789264565547696836454614499387250864698898719
2967699352767109042777248450053634813858385706873092851680049322796107822710
0876428013686365787929128746138240048121600943703309737163118861757828021449
3832164937528828143415015697365456840050816829438276428624229751172427841065
7148634194429027102063631783133949266080134112638824833407341982939919289733
9224399512569491814141694813733922119737092655918610730152933605013688208193
1981659262888595329115840098074011293505980430898541950516120964937479168459
4260846929883965983701312884295598281794038506993708290342397624544850473778
7484250815718902706891729328026280006822529839720781410082266878039320875944
5669436076683674712035752398801999002658042185245490939298424278169385218456
5854957363667372369195647707418194325420630075129133928535344887744717061472
9978590995213304868205615484733616161282215575596088206685340418260925662863
0067855448307204411338760130234497754451154990945002027084010856091601896904
8199801049727015679399321112363226010696804239853019977629024632850566927266
3051575589745992093736919678467590327059136137276786454029038126684969467121
9249520989511727801989065680551864978457399815364290155364649182657250171987
6381266645056144961508224442641743500704899714103798702625997249541914410568
7366233729652115806446983384086028048467833106267423928539001948635994196504
4717579156400123794281387526686870243039196538869359696368705980438708332035
2110166915919924876724915616744282013801877455816464257023185942055109938289
3322953281407714662755217022793989567688930857073114113823051213479034702350
0626695330178149033363836386015067611963397090819849624356888191728383944970
3316444581247562052139720916211015165629106830807139702202622042424098224662
9095400366000635063326757924936987348062945460496242822865005811447754044351
8088570132208609417079660433122377572787422976821080516513695158600768397451
9913702454447297105597577079009193316452540220696513318099545080192750987197
0194685060972569628850188239532568676489829381201685488251732666034838254061
1184984718399467532874552668315895021925369323111739358474330692963125897390
2090678269834180874144142148067562577765792982425521267148319613750198163262
9149683399066125826552816024946130678855668982234016541673963930823520525702
2294174113712330252863445167497261049198320381964755768627498577307645810218
3961653968710236557178768045672808021242785302650267490870400641809455495238
4564880591491610288067927753066552225053080577974318753516110965067240460362
7756712879295255205302156836170166380809183616139654533472176032118606691084
9413030835901138069095698149877048016843334763927390211473397502078125803157
4394221876294767738267397330984405293058422590525326237468005180642257719525
9177585737453997864170307072657261330368740618998032103933249938922311688134
4721840238943584801398944396613713830251005454339327364217734169583114617969
3453573476207229452793148053925291713081040676821476934254869649923833855179
0252325067990767678426478789808205281008689255045296899335836349425819448058
7884260801531925398287960253426912717660738023953009275543383365917379836421
7497885704250769306375914365282154675777733337396995117081837256919438805168
4648830581498502685281367961161505375544153213651349062596592511796121015683
5124408644052153703499307205683864287019413498809036910467231873540413360389
9848531350176228922532769032490744103365624439677126733757482969810458620193
9762124409645193865157471275626378180670718115039901090785863452014979012752
0609177431625331314521160571892720122662945864971548865489098747343545555207
9616044838965795956130079730736913508641024312307358063482027443919296402135
1490646262537320707921925958932736878381640046074785416142004329324117577858
5920047019656533787829172005967985014865570261753421374255505845075060237227
2953133454701117090876143001320034869276894484362898573185901912674689464106
9529305378934736665320123678386350759159468404493037799150029052065404314149
3792685904913078251576428544682776887020568596143398488107710806552701460697
0913653410919260563752483070402113749139255519453383120566405982378239243780
9854219215564764178008697601259262818672885054005073583782382729158759600738
1396930971731695181639423202704472304227721426354289640452291987572373133398
7056035151628228744358548606966662208595806638451502685413480630942320198951
5446884355223076428075546262689580508263460571373424529916311092332112042353
3792717254305999019550744155136388971639764992261098999612957001529210796214
9788611793709047614972371779594267723654418111884649777931396568544883094934
6679238550670636748782409246423512182135206258179671183153424086902046205108
9194376149471856860252728093066614092681538581785022123388107041665451252951
1298401286590275273195984353401899721858734287624772967112315360067199207085
1253128741411803920645640348770459616049712324386854975144012691432402459644
9520810427185769193814815557839343048980895034010385523790761666908586328092
6371327344848323338760573258453452919273450376738473024149219721817103108158
6047000826151898669714473639663825952324325327477328122596101570389261266831
4611884902185938400468027559945281973949911586330305416503546771640142337823
2464326543367698487134622966903563589803417905296623744946707256477350735396
8048388903627018658313109264881690175464055993897359241732165309381140486791
0830533745179590200827299217077414983729836694677243542887374992253903453242
6825783899336417452039944674667467818544516513755735230994507751876490465255
2831666388940798612280562637676854944000535664157365731170317814197295191481
3700095541596488516554602889210209559325116482149274730422346257092919694079
4718022085472114432570350661578845789143191441799599522070190285489982322436
7633696775311719221321290396657532807952138514590455718875120828636515701251
9874430758911985241984434596021119723096171338672342017819462609637748634113
7629454401559724896662684875606853287997959962128321597261958454484393535265
8504722909633383026910291584012396637463871775563376413939395265503351335438
3279150418282371524276645361206188460779486639957883803864360217837876265174
3109271199328257130360462990790331967282012892194385688703963773623661255221
0723345901113700167441968452048346008834664843691114259051547492478315569590
0070268259803685968845339090609204805992552225847799546885381457333848011241
7860392177499219087675571626732225809226789280853129600806301776288076955439
5532455509399365743205779244166458102225069855436903932137246290373547685317
6116163262982964091359850452630935710399494974804433736578506807984703889139
2450172878782048386510284179341347651738441014081869127398985230747953568394
2700648795144711348353634446437843070711415441383852504365799113431345990841
5148690527128082306909459267068745812866123751472758384980280649224662257930
7875202174160652513472158284048870429657975600095757302323169139791207028844
4900778772674138944528407365965774855880267667375518446950911797881009092700
9838888848249243472182532852086153364329524084037103349259965330730389791953
4429164151739164937548797150871646953669007591739657589464465654688645899794
195598419589698924170306781888939440250396728515625
LDBL_MAX
LDBL_MAX ( 小数点前有 4933位数 ) =
1189731495357231765021263853030970205169063322294624200440323733891737005522
9707226164102903365288828535456978074955773144274431536702884341981255738537
4367867359320070697326320191591828296152436552951064679108661431179063216977
8838896134786560600399148753433211454911160088679845154866512852340149773037
6000091254793939662231513836224178385427439178381387178058894875405751682263
4765923557697480511372564902088485522249479139937758502601177354918009979622
6026859508558883608159846900235645132346594476384939859276456284579661772930
4078066092291027150460853880879593277816229868275478307680800401506949423034
1172895777710033571401055977524212405734700738625166011082837911962300846927
7200965153500208474470792443848545912886723000619085126472111951361467527633
5195629275979572502780029807959041931396030214709970352764674455309220226796
5628099149823208332964124103850923918473478612192169721054348428704835340811
3042573002216421348917347174234800714880751002064390517234247656004721768096
4861079949434157034763206435586242074435044243805661360176088374781653890278
0957697597728686007148702828795556714140463261583262360276289631617397848425
4486860609948270867968048078702511858930838546584223040908805996294594586201
9037660484467909260022254105307759010657606713472001258464069570302571389609
8375799892695455305236856075868317922311363951946885088077187210470520395758
7480013143131444254943919940175753169339392366881856189129931729104252921236
8351599223220509980016771027840353601408292963981151228777681357060457893435
3545169653956125404884644716978689321167108722908808277835051822885764606221
8739702851655083720992349483334435228984751232753726636066213902281264706234
0753520717240586650795182173034637826313533937067749019501978416904418247380
6316282858685774143258116536404021840272491339332094921949842244273042701987
3044536620350262386957804682003601447291997123095530057206141866974852846856
1865148327159744812031219467516863793430961896151073300655524214851952017628
5859509105183947250286387163249416761380499631979144187025430270675849519200
8837915169401581740046711477877201459644461175204059453504764721807975761111
7208462736392796003396704700376133745095531841500737964126050479232516613548
4129188421134082301547330475406707281876350361733290800595189632520707167390
4547777129682265206225651439919376804400292380903112437912614776255964694221
9813751469670794468703580043925076594516183798118593920495440361149153107822
5107269148697980924094677214272701240437718740921675661363493890045123235166
8146089322400697993176017805338191849981933008410985993938760292601390911414
5260037202848721324119554242821018312042161044674046216353369005836646065911
5629876474552506814500393294140413149540067760295100596225302282300363147382
4681059648442441324864573137437595096416168048024129351876204668135636877532
8146755387988717718365128939471953350618850032676073543886733680020743878496
5701457609034985757124304510203873049485425670247933932280911052604153852899
4849203991091946129912491633289917998094380337879522093131466946149705939664
1523759492858909604899161219449899863848370224866722491489246784102061833646
2741696957630763248023558797524525373703543388296086275342774001633343405508
3537048507374544819754722228975281083020898682633020285259923084168054539687
9114182976299889645764827652875045628549242651652177507995162596692291149777
8896235667095662713848201819134832168799586365263762097828507009933729439678
4639879024914514222742527006363942327998483976739987154418554201562244154926
6530145155046854892586202760857618371297633587612153825651296335381416639495
1655600026415918655485005705261143195291991880795452239464962763563017858089
6692226406235382898535867595990647008385687123810329591926494846250768992258
4193054807636202150890221492205280698420183508405869384938154989094454619778
9302911357651677540623227829831403347327660395223160342282471752818181884430
4880921321933550869873395861276073670866652375555675803171490108477320096424
3187800700087973460329062789435537435644488519071916164551411557619393996907
6741515640282654366402676009508752394550734155613586793306603174472092444651
3532366647649735400851967040771103640538150073486891798364049570606189535005
0898409138268695350900667833244725787121966044152849248400418509328119089636
3417573989716659600075948780061916409485433875852065711654107226099628815012
3144377944008749301944744330784388995701842710004808305012177123560622895076
2690428568000477188931580893585155938631766529480890312677470296625451108615
4895839508779675546413794489596052797520987481383976257859210575628440175934
9324162148339565350189196811389091843795734703269406342890087805846940352453
4793980806742732362978871008671758025315613023560648787092598652884163509725
2953709111431720488774740553905400942537542411931794417513706468964386151771
8849867010341532542385911089624710885385808688837777258648564145934262121086
647588489260031762345960769508849149662444156604419552086811989770240
1.3 代码验证
1.3.1 思路
char ~ long long,甚至 float 和 double 的验证都很容易,表示他们范围的数计算机可以直接 计算 和 表示
但 long double 的验证就真有点让人头疼了
LDBL_MAX 和 LDBL_MIN:
计算机可以输出这个数,但 4933 位的数,我怎么用眼睛去准确验证?
思路1(效果最好!):将 它们 写入文件,把文件中数据复制下来,再写个读取字符串的代码就可以了
思路2:在程序中将他们转为字符串,再输出,但效果不好
效果见:https://blog.csdn.net/qq_40893824/article/details/105889122
注意:LDBL_MIN 的输出宽度!
LDBL_MIN:宽度最好取18000位,且不小于4933,因为小数部分前面有 4931 个 0。宽度取小了 或 不足够大 会影响输出效果!
无论是在控制台 输出( printf ) 还是 写入文件的( fprintf ),其宽度均18000!
printf("LDBL_MIN = %.18000Lf\nLDBL_MAX = %.10Lf\n\n", LDBL_MIN, LDBL_MAX);
if(strcmp(name,"LDBL_MIN") == 0)
fprintf(fp, "%-18000.17000Lf\n\n", a) ;
1.3.2 代码
写文件 主代码
#include<bits/stdc++.h>
#define num 100000
using namespace std;
int length(char a[])
{
int c = 0;
while(a[c] != '\0')
c++;
return c;
}
void concat(char a[], char b[], char c[])
{
int i, j;
i = 0;
while(i < length(b))
{
a[i] = b[i];
i++;
}
j = 0;
while(j < length(c))
{
a[i] = c[j];
i++;j++;
}
a[i] = '\0';
}
void LDRange(char str[], long double a, char name[])
{
FILE *fp;
char path1[4] = "./" ;
char path[100];
concat(path, path1, str);
fp = fopen(path, "a+");
if(fp == NULL)
{
cout<< str<< " can not open or can not append!"<< endl<< endl;
exit(0);
}
fprintf(fp, "%s = \n", name);
if(strcmp(name,"LDBL_MIN") == 0)
fprintf(fp, "%-18000.17000Lf\n\n", a) ;
else
fprintf(fp, "%-1500.1200Lf\n\n", a) ;
cout << "数字写入成功!" <<endl;
fclose(fp);
}
int main()
{
cout << "sizeof(char) = " << sizeof(char) << endl;
cout << "sizeof(short) = " << sizeof(short) << endl;
cout << "sizeof(short int) = " << sizeof(short int) << endl;
cout << "sizeof(int) = " << sizeof(int) << endl;
cout << "sizeof(long) = " << sizeof(long) << endl;
cout << "sizeof(long int) = " << sizeof(long int) << endl;
cout << "sizeof(long long) = " << sizeof(long long) << endl << endl;
cout << "sizeof(unsigned char) = " << sizeof(unsigned char) << endl;
cout << "sizeof(unsigned short) = " << sizeof(unsigned short) << endl;
cout << "sizeof(unsigned short int) = " << sizeof(unsigned short int) << endl;
cout << "sizeof(unsigned int) = " << sizeof(unsigned int) << endl;
cout << "sizeof(unsigned long) = " << sizeof(unsigned long) << endl;
cout << "sizeof(unsigned long int) = " << sizeof(unsigned long int) << endl;
cout << "sizeof(unsigned long long) = " << sizeof(unsigned long long) << endl << endl;
cout << "char上下范围:" << endl;
cout << "CHAR_MIN = " << CHAR_MIN << ", CHAR_MAX = " << CHAR_MAX << endl << endl;
cout << "short上下范围:" << endl;
cout << "SHRT_MIN = " << SHRT_MIN << ", SHRT_MAX = " << SHRT_MAX << endl << endl;
cout << "int上下范围:" << endl;
cout << "INT_MIN = " << INT_MIN << ", INT_MAX = " << INT_MAX << endl << endl;
cout << "long上下范围:" << endl;
cout << "LONG_MIN = " << LONG_MIN << ", LONG_MAX = " << LONG_MAX << endl << endl;
cout << "long long上下范围:" << endl;
cout << "LLONG_MIN = " << LLONG_MIN << ", LLONG_MAX = " << LLONG_MAX << endl << endl;
cout << endl;
cout << "unsigned char上限:" << endl;
cout << "UCHAR_MAX = " << UCHAR_MAX << endl << endl;
cout << "unsigned short上限:" << endl;
cout << "USHRT_MAX = " << USHRT_MAX << endl << endl;
cout << "unsigned int上限:" << endl;
cout << "UINT_MAX = " << UINT_MAX << endl << endl;
cout << "unsigned long上限:" << endl;
cout << "ULONG_MAX = " << ULONG_MAX << endl << endl;
cout << "unsigned long long上限:" << endl;
cout << "ULLONG_MAX = " << ULLONG_MAX << endl << endl;
cout << "sizeof(float) = " << sizeof(float) << endl;
cout << "sizeof(double) = " << sizeof(double) << endl;
cout << "sizeof(long double) = " << sizeof(long double) << endl << endl;
cout << "float上下范围(正数):" << endl;
cout << "FLT_MIN = " << FLT_MIN << ", FLT_MAX = " << FLT_MAX << endl;
printf("FLT_MIN = %.150f\nFLT_MAX = %.10f\n\n", FLT_MIN, FLT_MAX);
cout << "double上下范围(正数):" << endl;
cout << "DBL_MIN = " << DBL_MIN << ", DBL_MAX = " << DBL_MAX << endl;
printf("DBL_MIN = %.1100lf\nDBL_MAX = %.10lf\n\n", DBL_MIN, DBL_MAX);
cout << "long double上下范围(正数):" << endl;
cout << "LDBL_MIN = " << LDBL_MIN << ", LDBL_MAX = " << LDBL_MAX << endl;
printf("LDBL_MIN = %.18000Lf\nLDBL_MAX = %.10Lf\n\n", LDBL_MIN, LDBL_MAX);
char name[100] = "range.txt";
char str[num];
// float
float a = FLT_MIN, b = FLT_MAX;
float &p = a, &q = b;
strcpy(str, "FLT_MIN");
LDRange(name, p, str);
strcpy(str, "FLT_MAX");
LDRange(name, q, str);
// double
double a1 = DBL_MIN, b1 = DBL_MAX;
double &p1 = a1, &q1 = b1;
strcpy(str, "DBL_MIN");
LDRange(name, p1, str);
strcpy(str, "DBL_MAX");
LDRange(name, q1, str);
//long double
long double a2 = LDBL_MIN, b2 = LDBL_MAX;
long double &p2 = a2, &q2 = b2;
strcpy(str, "LDBL_MIN");
LDRange(name, p2, str);
strcpy(str, "LDBL_MAX");
LDRange(name, q2, str);
system("pause");
return 0;
}
运行结果:
https://blog.csdn.net/qq_40893824/article/details/106006812
求字符长度代码
这个在上面其实有,但要另开一个文件写这个代码,因为它的功能是验证文件结果的长度
#include<bits/stdc++.h>
#define num 1000000
using namespace std;
int main()
{
char p[num] = "11754943508222875079687365372222456778186655567720875215087517062784172594547271728515625";
int i = 0;
while(p[i]!='\0')
i++;
cout << "i = " << i<< endl<< endl;
system("pause");
return 0;
}
1.4 类似差别
字节数:
short <= int <= long <= long long
1.4.3 12 和 12L
12 默认 int,12L 是 long,就是int 和 long 的区别
2 输入输出
2.1 字符格式 与 n 进制
来源:https://baike.baidu.com/item/格式字符/1460342
n 进制 | 形式 | 前缀 | |
10 进制 | 整数 | %d、%ld、%I64d = %lld %ld:输出长整型数据 | 无前缀 |
浮点数 | %f/F、%lf/F、%Lf/F | ||
指数 | %e/E | ||
自动 | %g/G 自动选 f 或 e ( 选择占宽度较小的一种 ),不输出 0 | ||
8 进制 | %o | 0 | |
16 进制 | %x/X | 0x 或 0X | |
2 进制 | 无 | 0b 或 0B |
无符号整数,把 d 换成 u,其它不变
字符:
单个字符:%c
字符串:%s
2.1.1 代码 - 验证无符号形式
#include<bits/stdc++.h>
using namespace std;
int main()
{
unsigned short b;
unsigned short int c;
unsigned int d;
unsigned long e;
unsigned long int f;
unsigned long long g;
scanf("%u", &b);
printf("b(unsigned short) = %u\n\n", b);
scanf("%u", &c);
printf("c(unsigned short int) = %u\n\n", c);
scanf("%u", &d);
printf("d(unsigned int) = %6u\n\n", d);
scanf("%lu", &e);
printf("e(unsigned long) = %-12lu\n\n", e);
scanf("%lu", &f);
printf("f(unsigned long int) = %-12lu\n\n", f);
scanf("%llu", &g);
printf("e(unsigned long long) = %-20llu\n\n", g);
scanf("%I64u", &g);
cout << "e(unsigned long long %-20I64u) = ";
printf("%-20I64u\n\n", g); // printf - \%\I\64\d\
system("pause");
return 0;
}
2.1.2 进制转化 itoa()函数
char *itoa( 原数据, 转换后的字符串, 变成n进制) ;
n >= 2
#include<bits/stdc++.h>
#define num 100
using namespace std;
int main()
{
char d[num] = "!sa1s";
char b1[num];
itoa(d[0], b1, 2);
printf("%c = %s \n\n\n",d[0], b1);
int a = 123;
char b2[num];
itoa(a, b2, 2);
printf("%d = %s \n\n\n",a, b2);
system("pause");
return 0;
}
2.2 各数据类型一般输入输出
scanf("%d", &i);
printf("%m.nd", i);
char | int | long | long int | long long | |
---|---|---|---|---|---|
输入scanf() | %c | %d | %ld | %ld | %I64d(大写 I) %lld(小写 l) |
输出printf() | %c | %d | %ld | %ld | %I64d(大写 I) %lld(小写 l) |
float | double | long double | |
---|---|---|---|
输入scanf() | %m.nf | %m.nlf (小写 l) | %m.nLf |
输出printf() | %m.nf | %m.nf | %m.nLf |
易混淆提示:
%I64d (大写 I) %lld (小写 l)
%m.nlf (小写 l)
2.2.1 注意
1 printf() 均是各数据类型的范围
2 scanf() 的精度:
char - long long 是各数据类型的范围
float:最多8位
double:最多17位
long double:最多20位
2.2.2 代码验证
#include<bits/stdc++.h>
using namespace std;
int main()
{
char a;
short b;
short int c;
int d;
long e;
long int f;
long long g;
float m;
double n;
long double p;
scanf("%c", &a);
printf("a(char) = %c\n\n", a);
scanf("%d", &b);
printf("b(short) = %d\n\n", b);
scanf("%d", &c);
printf("c(short int) = %d\n\n", c);
scanf("%d", &d);
printf("d(int) = %6d\n\n", d);
scanf("%d", &e);
printf("e(long) = %-12d\n\n", e);
scanf("%ld", &f);
printf("f(long int) = %-12ld\n\n", f);
scanf("%lld", &g);
printf("e(long long) = %-20lld\n\n", g);
scanf("%I64d", &g);
cout << "e(long long %-20I64d) = ";
printf("%-12I64d\n\n", g); // printf - \%\I\64\d\
scanf("%F", &m) ;
printf("m(float) = %-40.4F\n\n", m);
scanf("%lF", &n);
printf("n(double) = %-400.4F\n\n", n);
scanf("%LF", &p);
printf("p(long double) = %-5000.4LF\n\n", p);
system("pause");
return 0;
}
2.3 代码验证
#include<bits/stdc++.h>
using namespace std;
int main()
{
double i = 123.123;
cout << "%.1f :"<< endl;
printf("%.1f\n\n", i);
cout << "%.3f :"<< endl;
printf("%.3f\n\n", i);
cout << "%.4f :"<< endl;
printf("%.4f\n\n", i);
cout << "%8.4f :"<< endl;
printf("%8.4f\n\n", i);
cout << "%9.4f :"<< endl;
printf("%9.4f\n\n", i);
cout << "%10.4f :"<< endl;
printf("%10.4f\n\n", i);
return 0;
}
2.4 域宽控制
默认保留6位小数
%±m.nf:
(1) n:小数部分 n 位
(2) m:数字全部数位,在按照小数部分n位的情况下:
若 m <= 实际数位,忽略m,输出实际数
若 m > 实际数位,输出宽度为m的实际数,多出部分显示为空
m 和 n 是常数,不能是变量!
变量情况见:
±:-靠左; +靠右(默认)
2.4.1 域宽变量控制
1 域宽是变量;2 宏定义
域宽是变量:
printf("%*.*f\n\n", m, n, i);
宏定义
#define print(width, type, value) printf("%"#width#type,(value))
print(10.8, f, i);
2.4.2 测试代码
#include<bits/stdc++.h>
#define print(width, type,value) printf("%"#width#type,(value))
using namespace std;
int main()
{
int m, n;
double i = 123.123;
// 法 1 域宽变量
m = 10;
n = 2;
printf("%*.*f\n\n", m, n, i);
// 法 2 宏定义 域宽常量
print(10.3, f, i);
cout<< endl<< endl;
system("pause");
return 0;
}
2.5 另类输入
%[ ^\n ]:输入字符串时想带有空格,遇到换行符就结束输入
%[ a - z ]:只读字符a,b, … , y, z
2.5.1 %[ ^\n ]
#include<bits/stdc++.h>
#define num 100
using namespace std;
int main()
{
char str[num];
scanf("%[^\n]", str);
printf("%s\n\n", str);
getchar();
scanf("%[^\n^'r']", str);
printf("%s\n\n", str);
system("pause");
return 0;
}
2.5.2 %[ a - z ]
%[ a - z ] | 含义 |
---|---|
%[0-7] | 只读 0, 1, …, 6, 7 |
%[a-zA-Z] | 只读 大写小字母 |
%[a-b-4-8] | 只读 a, b, -, 4, … ,7, 8 |
测试代码:
#include<bits/stdc++.h>
#define num 100
using namespace std;
int main()
{
char str[num];
scanf("%[0-7]", str); // 只读 0 - 7
printf("%s\n\n", str);
getchar();
scanf("%[a-zA-Z]", str); // 只读 大小写字母
printf("%s\n\n", str);
getchar();
scanf("%[a-b-4-8]", str); // 只读 a、b、-、4 - 8
printf("%s\n\n", str);
system("pause");
return 0;
}