最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

2022年的 Tcl/Tk 編程入門參考 8.表達(dá)式計(jì)算

2022-04-16 14:30 作者:象喻  | 我要投稿

??為什么現(xiàn)在才介紹表達(dá)式……這涉及文件夾排列順序的深層次問題——沒注意,把它漏過去了——直到if命令發(fā)完,隱約感到一絲絲不安,才想起來。

??為什么又繼續(xù)更了"異常處理"?因?yàn)槲以噲D掩蓋失誤……但是我發(fā)現(xiàn)都欺騙不了我自己,放棄了……


expr命令用于數(shù)學(xué)表達(dá)式計(jì)算、邏輯比較和字符串比較。

這個(gè)命令比較關(guān)鍵的地方在于它的執(zhí)行流程:首先,它會(huì)把所有的參數(shù)組合成一個(gè)字符串,然后對(duì)這個(gè)字符串進(jìn)行替換操作,最后把替換后的結(jié)果視為表達(dá)式進(jìn)行計(jì)算。如果只給它一個(gè)參數(shù),由于不需要組合,所以能微弱提升效率,但是組合的步驟仍然會(huì)把這個(gè)唯一參數(shù)變成字符串,然后進(jìn)行替換操作,再進(jìn)行計(jì)算。

也就是說,無論是單個(gè)參數(shù)還是多個(gè)參數(shù),即便用{}括起來,在計(jì)算前也會(huì)進(jìn)行替換操作。

?


字符串比較

expr可以比較兩個(gè)字符串是否相同,與邏輯比較類似,返回代表布爾值概念的1/0(1代表"是",0 代表 "否")

其使用eq和ne作為比較運(yùn)算符(eq ?-> equal 相等,ne ?-> ?not ?equal 不相等):

*提示:字符串的string命令也有比較功能。


精度問題

expr命令在計(jì)算或邏輯比較時(shí),會(huì)對(duì)表達(dá)式的值進(jìn)行自動(dòng)轉(zhuǎn)換(不是Tcl語法里的替換,是數(shù)學(xué)層面的轉(zhuǎn)換),這有可能會(huì)導(dǎo)致精確度問題,或者與預(yù)期不符。

?


三元運(yùn)算符

三元運(yùn)算符(?和:)是編程語言中常見的縮寫形式,用來縮短 if - then - else 語句的代碼量。但是在Tcl語言里,運(yùn)算符必須配合expr這樣的命令使用,考慮到expr自身的規(guī)則都快趕上語法了,所以實(shí)際上就沒啥優(yōu)勢(shì)了。

三元運(yùn)算符:判斷條件 ? {為真時(shí)執(zhí)行的代碼} : {為假時(shí)執(zhí)行的代碼}

?


安全性

舉例時(shí)經(jīng)常給表達(dá)式加上大括號(hào),這是官方推薦的寫法,除了前面提到的能略微提升效率之外,還有一個(gè)更重要的原因——防止命令注入。

無論是命令行還是圖形界面程序,經(jīng)常會(huì)接收用戶輸入的數(shù)據(jù)(比如用戶名、密碼的輸入框),而expr的運(yùn)行機(jī)制在接收用戶數(shù)據(jù)時(shí)有問題(假設(shè)存放在userinput變量中):

?



2022年的 Tcl/Tk 編程入門參考 8.表達(dá)式計(jì)算的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
合阳县| 莎车县| 六安市| 卢湾区| 秀山| 忻州市| 公安县| 雷山县| 图木舒克市| 财经| 页游| 星子县| 津市市| 开阳县| 永胜县| 云南省| 比如县| 楚雄市| 泸州市| 岑巩县| 广西| 敦煌市| 荥经县| 威远县| 浏阳市| 赤城县| 金平| 文昌市| 蒙城县| 沁源县| 普兰县| 渑池县| 海城市| 安顺市| 宜春市| 鄂尔多斯市| 化德县| 喀什市| 武穴市| 兴化市| 洛川县|