如何检查float变量是否包含整数值?到目前为止,我一直在使用:
float f = 4.5886;
if (f-(int)f == 0)
printf("yes\n");
else printf("no\n");
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有更好的解决方案,或者这个解决方案是否存在任何(或许多)缺点.
是否有可能在bash中回显退格?
就像是
echo $'stack\b'
Run Code Online (Sandbox Code Playgroud)
不应该输出stac?或者我错过了什么?
更具体地说,我想在以下方面使用它:
ls | wc -l; echo $'\b items'
Run Code Online (Sandbox Code Playgroud) 我做了一个int来计算我的一个进程有多少成功.在我的代码之外,我声明:
int successes = 0.
然后在我的循环中,我有successes++;,此时XCode抱怨"变量不可分配(缺少_block类型说明符)".
到底是怎么回事?为什么我不能增加我的int?我从未宣称它是只读的......
任何帮助深表感谢.
我使用的代码是:
_block int successes = 0;
for(CLLocation *location in locationOutputArray)
{
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
[geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error)
{
if(placemarks && placemarks.count > 0)
{
successes++;
CLPlacemark *topResult = [placemarks objectAtIndex:0];
NSString *address = [NSString stringWithFormat:@"%@ %@,%@ %@", [topResult subThoroughfare],[topResult thoroughfare],[topResult locality], [topResult administrativeArea]];
[addressOutputArray addObject:address];
NSLog(@"%@",address);
}
}];
[geocoder release];
}
Run Code Online (Sandbox Code Playgroud) 在阅读手册页时strcpy,我发现该功能stpcpy也存在.但是,我在手册页中注意到的唯一区别是:
char *
stpcpy(char *s1, const char *s2);
char *
strcpy(char *restrict s1, const char *restrict s2);
Run Code Online (Sandbox Code Playgroud)
那么,这restrict意味着什么呢?
我有一堆不完整的文件:最后一行缺少EOL字符.
使用任何工具添加换行的最简单方法是什么(awk可能?)?
我想之前曾问过,但我找不到任何类似的问题.
当用C++编写部分作用域操作符时,Vim猜测它将成为一个标签(在第一个上:),然后自动缩进它,这非常烦人.例:
#1 - 初始打字
{
std
Run Code Online (Sandbox Code Playgroud)
#2 - 补充说 :
{
std:
Run Code Online (Sandbox Code Playgroud)
#3 - 补充说 :
{
std::
Run Code Online (Sandbox Code Playgroud)
当然,最后它是正确的,但有没有办法禁用标签的自动缩进?我很少使用它们,在这些情况下手动缩进不会很大.
关于这个 问题,手动设置undef列表元素和Perl设置的元素之间有什么区别,当通过分配比列表大小更大的索引来增加该列表的大小时,是否有别名?例如,考虑以下代码:
@a = (undef, 0);
@b = ();
$b[1] = 0;
print Dumper(@a), "\n", Dumper(@b);
Run Code Online (Sandbox Code Playgroud)
它打印(我认为如预期的那样):
$VAR1 = undef;
$VAR2 = 0;
$VAR1 = undef;
$VAR2 = 0;
Run Code Online (Sandbox Code Playgroud)
那么,阵列不一样吗?显然不是:
sub change { $_[0] = 1 }
change(@a); change(@b);
print Dumper(@a), "\n", Dumper(@b);
Run Code Online (Sandbox Code Playgroud)
哪个印刷品:
$VAR1 = 1;
$VAR2 = 0;
$VAR1 = undef;
$VAR2 = 0;
Run Code Online (Sandbox Code Playgroud) 在我的应用程序的逻辑过程中,我需要经常访问用户首选项,并且需要10到15次来确定需要处理的内容以及如何处理.可能这个问题不是关于性能,而是关于正确地做到这一点.
目前我[[NSUserDefaults standardUserDefaults] valueForKey:...]每次需要申请价值时都会这样做.它是否正确?我认为将用户默认值"保存"为ivar可以减少额外的工作,但后来我想知道这是否会出现同步问题,例如用户是否更改了首选项并且只有在应用程序重新启动时才会更新(所以重新创建用户默认对象).
有没有更好的方法?
如果我写:
char arr[8] = "abc";
Run Code Online (Sandbox Code Playgroud)
什么arr[4]可能是什么规格?我用Clang做了一些测试,似乎数组中剩余的字符都设置为null.此外,char arr[8] = "";每个字节都为零.不确定这是编译器的便利性,标准行为,纯粹的巧合还是我弄错了.
void a()
{
char arr[8] = "abc"; /* breakpoint here, line 3 */
strcpy(arr, "1234567");
}
int main()
{
a();
a();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
调试器脚本:
Breakpoint 1, a () at str.c:3 3 char arr[8] = "abc"; (gdb) s Current language: auto; currently minimal 4 strcpy(arr, "1234567"); (gdb) p arr $1 = "abc\000\000\000\000" (gdb) c Continuing. Breakpoint 1, a () at str.c:3 3 char arr[8] = "abc"; (gdb) …
虽然我对数学意义上的currying有一点了解,但部分应用中缀函数是一个新概念,我在深入研究" 了解你是一个很好的Haskell "一书后发现了这个概念.
鉴于此功能:
applyTwice :: (a -> a) -> a -> a
applyTwice f x = f (f x)
Run Code Online (Sandbox Code Playgroud)
作者以一种有趣的方式使用它:
ghci> applyTwice (++ [0]) [1]
[1,0,0]
ghci> applyTwice ([0] ++) [1]
[0,0,1]
Run Code Online (Sandbox Code Playgroud)
在这里我可以清楚地看到,结果函数传递了不同的参数,这不会通过正常的方式发生,因为它是一个curried函数(是吗?).那么,Haskell对中缀切片有什么特殊处理吗?它对所有中缀函数都是通用的吗?
作为旁注,这是我使用Haskell和函数式编程的第一周,我还在读这本书.
haskell functional-programming currying partial-application operator-sections
c ×3
bash ×2
int ×2
objective-c ×2
string ×2
awk ×1
c++ ×1
cocoa ×1
currying ×1
echo ×1
haskell ×1
indentation ×1
newline ×1
performance ×1
perl ×1
readonly ×1
text-files ×1
vim ×1