小编pot*_*bie的帖子

如何在TCL中保持命令安静?

如何在set不在屏幕上打印输出的情况下执行命令?我想在不显示屏幕上的内容的情况下读取文件.

set a [open "giri.txt" r]
set b [read $ifile]
Run Code Online (Sandbox Code Playgroud)

tcl

9
推荐指数
1
解决办法
8466
查看次数

浮点值,运算符和函数有多不可靠?

我不想在一个不精确的值是一个令人讨厌的时候引入浮点数,所以我有几个问题关于你何时可以安全地使用它们.

只要不溢出有效数字的数量,它们对整数是否精确?这两个测试总是正确的:

double d = 2.0;
if (d + 3.0 == 5.0) ...
if (d * 3.0 == 6.0) ...
Run Code Online (Sandbox Code Playgroud)

您可以依赖什么数学函数?这些测试总是如此:

#include <math.h>

double d = 100.0;
if (log10(d) == 2.0) ...
if (pow(d, 2.0) == 10000.0) ...
if (sqrt(d) == 10.0) ...
Run Code Online (Sandbox Code Playgroud)

这个怎么样:

int v = ...;
if (log2((double) v) > 16.0) ... /* gonna need more than 16 bits to store v */
if (log((double) v) / log(2.0) > 16.0) ... /* C89 */
Run Code Online (Sandbox Code Playgroud)

我想你可以总结这个问题:1)浮点类型是否可以保存所有整数的精确值,直到float.h中有效数字的数字?2) …

c floating-point

7
推荐指数
1
解决办法
338
查看次数

符号常量的"类型"?

  1. 何时在符号常量/宏中包含类型转换是合适的,如下所示:

    #define MIN_BUF_SIZE ((size_t) 256)
    
    Run Code Online (Sandbox Code Playgroud)

    通过类型检查,这是一种让它更像真实变量的好方法吗?

  2. 什么时候使用LU(或LL)后缀是合适的:

    #define NBULLETS 8U
    #define SEEK_TO 150L
    
    Run Code Online (Sandbox Code Playgroud)

c

6
推荐指数
1
解决办法
681
查看次数

unsigned char类型可以有填充位和/或未使用的值吗?

除位字段之外的所有类型都占用整数个"字节",而sizeof返回该数字.unsigned char 占用 1"byte",因此sizeof(unsigned char)总是返回1.对吗?

但是,无符号字符是否总是填充 "字节",或者CHAR_BITS是否小于"字节"或UCHAR_MAX中的位数小于(2到CHAR_BITS的幂) - 1?如果unsigned char不能保存其位数允许的所有值,那么使用unsigned chars复制其他类型的工作原理如何?

int src = -1, dest;
size_t i;

for (i = 0; i < sizeof dest; i++) {
  ((unsigned char *) &dest)[i] = ((unsigned char *) &src)[i];
}
Run Code Online (Sandbox Code Playgroud)

c

6
推荐指数
1
解决办法
536
查看次数

关闭文件名中的波浪号替换?

在文件命令(以及其他一些命令)中是否已经完成或正在计划做什么关于无法关闭波浪号替换?我最近读到的是http://wiki.tcl.tk/28190,但是编程语言中的这种危险特性肯定不能被忽略吗?难道不是让C函数Tcl_TildeSubst()检查是否存在全局Tcl变量,并且根据它来做扩展或不扩展吗?

我经常在shell脚本不够时编写Tcl脚本,并且很多时候它包括比较,复制,打开,删除和/或重命名文件.在运行脚本之前,我总是find用来检查以波浪号(〜)开头的文件名.我很想知道其他Tcl程序员是如何做到这一点的.

tcl

3
推荐指数
1
解决办法
509
查看次数

TCL : "tclsh "$0" ${1+"$@"}" 和 argc , argv , argv0 之间的区别

#!/bin/sh
# -*- tcl -*-
# The next line is executed by /bin/sh, but not tcl \
exec tclsh "$0" ${1+"$@"}
Run Code Online (Sandbox Code Playgroud)

我对以上两件事感到困惑。

我开始知道 $0 是文件名,我们也使用 argv0 获取文件名。

并且 argv 是文件的参数,与 "$@" 相同,但是为什么我们要在 sritps 中同时使用这两个东西。

shell tcl

2
推荐指数
1
解决办法
785
查看次数

重绘整个屏幕的正确方法?

我不明白当用户按下Ctrl-L或Ctrl-R时用于重绘屏幕的功能.什么是两者的区别clearok(),redrawwin()wrefresh()curscr作为参数?从OpenBSD手册页:

如果以TRUE作为参数调用clearok,则使用此窗口调用wrefresh将完全清除屏幕并从头开始重绘整个屏幕.当屏幕内容不确定时,或者在某些情况下获得更令人愉悦的视觉效果时,这非常有用.如果clearok的win参数是全局变量curscr,则使用任何窗口调用wrefresh会导致屏幕被清除并从头开始重新绘制.

...

如果wrefresh的win参数是全局变量curscr,则会立即清除屏幕并从头开始重新绘制.

...

wredrawln例程指示诅咒某些屏幕行已损坏,应该在将任何内容写入之前将其丢弃.它触及指示的线条(标记它们已更改).例程redrawwin()触及整个窗口.

c c++ curses ncurses

2
推荐指数
1
解决办法
513
查看次数

现实生活中的XOR情况?

我试图解释与OR逻辑相比的XOR逻辑.

或者例子很多,例如"我需要在里面或使用雨伞保持干燥",但XOR示例更难.

boolean-logic

1
推荐指数
3
解决办法
9466
查看次数

分配一个大块而不是很多小块?

我正在读一个2 MB的单词列表,内存大约有20万个单词.为了能够索引它们,我使用一个char *数组.由于单词不会增长或缩小,最好将整个文件读入一个内存块并让指针指向那个,而不是malloc()为每个单词做一个?

c memory-management

1
推荐指数
1
解决办法
114
查看次数