1.)
<span>((i <= n) && (a[i] == 0)) || (((i >= n) && (a[i-1] == 0))) </span>
<span>The expression will be true IF the first part is true, or if the first part is false and the second part is true. This is because || uses "short circuit" evaluation. If the first term is true, then the second term is *never even evaluated*. </span>
<span>For || the expression is true if *either* part is true, and for && the expression is true only if *both* parts are true. </span>
<span>a.) (i <= n) || (i >= n) </span>
<span>This means that either, or both, of these terms is true. This isn't sufficient to make the original term true. </span>
<span>b.) (a[i] == 0) && (a[i-1] == 0) </span>
<span>This means that both of these terms are true. We substitute. </span>
<span>((i <= n) && true) || (((i >= n) && true)) </span>
<span>Remember that && is true only if both parts are true. So if you have x && true, then the truth depends entirely on x. Thus x && true is the same as just x. The above predicate reduces to: </span>
<span>(i <= n) || (i >= n) </span>
<span>This is clearly always true. </span>
Is that a joke... if ain't cheatin you repeatin
This type of freedom is called dreaming
Advntage:
provides CPU scheduling, memory management, file management, and other operating system functions through system calls. The other one is that it is a single large process running entirely in a single address space.
Disadvantage: if anyone service fails it leads to an entire system failure
That if something happens such as some one gets cancer you can pay for it or if you lose your job you can still have time to react and get a new job